MSDN.WhiteKnight - Stack Overflow answers
Ответ на "C++ #define UNICODE"
Answer 875145
Большинство функций WinAPI существуют в двух вариантах: ANSI (использующие текущую кодовую страницу системы) и Unicode. Эти варианты называются наборами символов (character sets). Если открыть заголовочные файлы Windows SDK, можно увидеть, что функции в них объявлены так:
#ifdef UNICODE #define CreateFile CreateFileW #else #define CreateFile CreateFileA #endif // !UNICODE
Использование символа препроцессора UNICODE позволяет писать код, не привязываясь к определенному набору символов: добавляя или убирая его определение, можно легко переключиться с одного на другой. Эта функциональность была полезна во времена, когда нужно было собирать приложения как под Windows 9x, не поддерживающую Unicode, так и под Windows XP. Определить символ препроцессора можно не только из кода, но и параметром компилятора (например, ключ /D в Visual C++), что позволяло иметь одинаковый код проекта и собирать его в студии разными конфигурациями под разные ОС.
Кроме того, в Visual C++ есть заголовочный файл tchar.h, который использует похожий механизм для функций стандартной библиотеки, но он использует другой символ препроцессора -
_UNICODE
.
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.