/Zc:wchar_t (wchar_t é de tipo nativo)
Analise wchar_t
como um tipo interno de acordo com o padrão C++.
Sintaxe
/Zc:wchar_t[-]
Comentários
Se /Zc:wchar_t estiver ativado, wchar_t
será uma palavra-chave para um tipo integral interno no código compilado como C++. Se /Zc:wchar_t- (com um sinal de menos) for especificado ou no código compilado como C, wchar_t
não for um tipo interno. Em vez disso, wchar_t
é definido como um typedef
para unsigned short
no cabeçalho canônico stddef.h. (A implementação da Microsoft a define em outro cabeçalho incluído por stddef.h e outros cabeçalhos padrão).
Não recomendamos /Zc:wchar_t- porque o padrão C++ requer que wchar_t
seja um tipo interno. Usar a versão typedef
pode causar problemas de portabilidade. Se você atualizar de versões anteriores do Visual Studio e encontrar o erro do compilador C2664 porque o código está tentando converter implicitamente um wchar_t
em unsigned short
, recomendamos alterar o código para corrigir o erro, em vez de definir /Zc:wchar_t-.
A opção /Zc:wchar_t está ativada por padrão em compilações C++ e é ignorada em compilações C. A opção /permissive- não afeta a /Zc:sizedDealloc.
A Microsoft implementa wchar_t
como um valor sem sinal de dois bytes. Ele será mapeado para tipo nativo específico da Microsoft, __wchar_t
. Para obter mais informações sobre wchar_t
, consulte Intervalos de tipos de dados e Tipos fundamentais.
Se você escrever um novo código que precisa interoperar com um código mais antigo que ainda que use a versão typedef
de wchar_t
, poderá fornecer sobrecargas para as variações unsigned short
e __wchar_t
de wchar_t
, para que seu código possa ser vinculado pelo código compilado com /Zc:wchar_t ou o código compilado sem ele. Caso contrário, você precisará fornecer duas diferentes compilações da biblioteca – uma com e outra sem /Zc:wchar_t habilitado. Mesmo nesse caso, é recomendável compilar o código mais antigo usando o mesmo compilador que você usa para compilar o novo código. Nunca misture binários compilados com compiladores diferentes.
Quando /Zc:wchar_t é especificado, os símbolos _WCHAR_T_DEFINED e _NATIVE_WCHAR_T_DEFINED são definidos. Para obter mais informações, confira Macros predefinidas.
Se seu código usa as funções globais COM do compilador, como /Zc:wchar_t agora é ativado por padrão, recomendamos que você altere referências explícitas a comsupp.lib (do pragma de comentário ou na linha de comando) para comsuppw.lib ou comsuppwd.lib. (Se você precisar compilar com /Zc:wchar_t-, use comsupp.lib). Se você incluir o arquivo de cabeçalho comdef.h, a biblioteca correta será especificada para você. Para obter informações sobre o suporte para COM do compilador, consulte Suporte para COM do compilador.
O tipo wchar_t
integrado não tem suporte quando você compila código C. Para obter mais informações sobre problemas de conformidade com o Visual C++, confira Comportamento fora do padrão.
Para definir esta opção do compilador no ambiente de desenvolvimento do Visual Studio
Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter detalhes, confira Definir as propriedades de build e do compilador do C++ no Visual Studio.
Selecione a página Propriedades de Configuração>LinguagemC/C++>.
Modifique a propriedade de Trate WChar_t Como um Tipo Interno.
Para definir essa opção do compilador via programação
- Consulte TreatWChar_tAsBuiltInType.