/Zc:wchar_t (собственный тип wchar_t)
Разбор wchar_t
как встроенного типа в соответствии со стандартом C++.
Синтаксис
/Zc:wchar_t[-]
Замечания
Если включен параметр /Zc:wchar_t , wchar_t
это ключевое слово для встроенного целочисленного типа в коде, скомпилированном как C++. Если указан параметр /Zc:wchar_t- (с знаком минуса) или в коде, скомпилированном как C, wchar_t
не является встроенным типом. Вместо этого wchar_t
определяется как для typedef
unsigned short
канонического заголовка stddef.h. (Реализация Майкрософт определяет ее в другом заголовке, включенном stddef.h и другими стандартными заголовками.)
Мы не рекомендуем /Zc:wchar_t, так как стандарт C++ требует, чтобы wchar_t
он был встроенным типом. Использование версии typedef
может вызывать проблемы переносимости. Если вы обновляете более ранние версии Visual Studio и сталкиваетесь с ошибкой компилятора C2664, так как код пытается неявно преобразовать unsigned short
wchar_t
в, рекомендуется изменить код, чтобы устранить ошибку, вместо параметра /Zc:wchar_t-.
Параметр /Zc:wchar_t включен по умолчанию в компиляциях C++ и игнорируется в компиляциях C. Параметр /permissive- не влияет на /Zc:wchar_t.
Microsoft реализует тип wchar_t
как двухбайтовое значение без знака. Он сопоставляется с собственным типом __wchar_t
майкрософт. Дополнительные сведения см. в wchar_t
разделе "Диапазоны типов данных" и "Основные типы".
Если вы пишете новый код, который должен взаимодействовать со старым кодом, который по-прежнему использует typedef
версиюwchar_t
, можно предоставить перегрузки для обоих wchar_t
unsigned short
__wchar_t
вариантов, чтобы код можно было связать с кодом, скомпилированный с /Zc:wchar_t или кодом, скомпилированный без него. В противном случае необходимо предоставить две разные сборки библиотеки, одну с и одной без /Zc:wchar_t . Даже в этом случае рекомендуется произвести сборку старого кода с использованием компилятора, который используется для компиляции нового кода. Никогда не смешивайте двоичные файлы, скомпилированные разными компиляторами.
При указании /Zc:wchar_t определяются _WCHAR_T_DEFINED и _NATIVE_WCHAR_T_DEFINED символы. Для получения дополнительной информации см. Predefined Macros.
Если код использует глобальные функции COM компилятора, так как /Zc:wchar_t теперь включен по умолчанию, рекомендуется изменить явные ссылки на comsupp.lib (либо из комментария pragma , либо в командной строке) на comsuppw.lib или comsuppwd.lib. (Если необходимо скомпилировать с /Zc:wchar_t-, используйте comsupp.lib.) Если вы включаете файл заголовка comdef.h, для вас указана правильная библиотека. Сведения о поддержке COM компилятора см. в разделе "Поддержка COM компилятора".
Встроенный wchar_t
тип не поддерживается при компиляции кода C. Дополнительные сведения о проблемах соответствия с Visual C++см. в разделе "Нестандартное поведение".
Установка данного параметра компилятора в среде разработки Visual Studio
Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
Выберите страницу свойств>конфигурации C/C++>Language.
Измените свойство "Обрабатывать wchar_t как встроенный тип ".
Установка данного параметра компилятора программным способом
- См. раздел TreatWChar_tAsBuiltInType.