Поделиться через


/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 shortwchar_t в, рекомендуется изменить код, чтобы устранить ошибку, вместо параметра /Zc:wchar_t-.

Параметр /Zc:wchar_t включен по умолчанию в компиляциях C++ и игнорируется в компиляциях C. Параметр /permissive- не влияет на /Zc:wchar_t.

Microsoft реализует тип wchar_t как двухбайтовое значение без знака. Он сопоставляется с собственным типом __wchar_tмайкрософт. Дополнительные сведения см. в wchar_tразделе "Диапазоны типов данных" и "Основные типы".

Если вы пишете новый код, который должен взаимодействовать со старым кодом, который по-прежнему использует typedef версиюwchar_t, можно предоставить перегрузки для обоих wchar_tunsigned 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

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.

  2. Выберите страницу свойств>конфигурации C/C++>Language.

  3. Измените свойство "Обрабатывать wchar_t как встроенный тип ".

Установка данного параметра компилятора программным способом

См. также

/Zc (соответствие)