/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

  1. 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.

  2. Selecione a página Propriedades de Configuração>LinguagemC/C++>.

  3. Modifique a propriedade de Trate WChar_t Como um Tipo Interno.

Para definir essa opção do compilador via programação

Confira também

/Zc (conformidade)