/Zc:wchar_t (wchar_t é do tipo nativo)

 

Para obter a documentação mais recente do Visual Studio 2017 RC, consulte a documentação do Visual Studio 2017 RC.

Analise wchar_t como um tipo interno de acordo com o padrão C++. Por padrão, /Zc:wchar_t é ativado.

/Zc:wchar_t[-]  

Se /Zc:wchar_t estiver ativado, wchar_t será mapeado para tipo nativo específico da Microsoft __wchar_t. Se /Zc:wchar_t- (com um sinal de subtração) for especificado, wchar_t será mapeado para um typedef de unsigned short. (No Visual C++ 6.0 e versões anteriores, wchar_t não era implementado como tipo interno, mas era declarado em wchar.h como typedef de unsigned short.) 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 C++ e encontrar o erro C2664 do compilador porque o código está tentando converter implicitamente wchar_t em unsigned short, recomendamos alterar o código para corrigir o erro, em vez de definir /Zc:wchar_t-.

A Microsoft implementa wchar_t como um valor sem sinal de dois bytes. 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, consulte 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ê tiver de 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 COM do compilador.

O tipo wchar_t não tem suporte quando você compila código C. Para obter mais informações sobre problemas de conformidade com o Visual C++, consulte Comportamento não 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, consulte Trabalhando com propriedades do projeto.

  2. No painel esquerdo, expanda Propriedades de Configuração, C/C++ e selecione Linguagem.

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

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

/Zc (conformidade)

Mostrar: