Macros predefinidas
Lists the predefined ANSI/ISO C99 and Microsoft C++ implementation preprocessor macros.
O compilador reconhece macros de pré-processador ANSI/ISO C99 C predefinidas e a implementação do Microsoft C++ fornece muitas outras. Essas macros de pré-processador não usam argumentos e não podem ser redefinidas. Algumas das macros predefinidas listadas neste artigo são definidas com vários valores.
Macros predefinidas compatíveis com ANSI
Macro |
Descrição |
---|---|
__DATE__ |
A data de compilação do arquivo de origem atual. A data é uma cadeia de caracteres literal no formato Mmm dd yyyy. O nome do mês Mmm é igual para as datas geradas pela função de biblioteca asctime, declarada em TIME.H. |
__FILE__ |
O nome do arquivo de origem atual. __FILE__ expande para uma cadeia de caracteres literal. Para garantir que o caminho completo para o arquivo é exibido, use /FC (caminho completo do arquivo de código-fonte no diagnóstico). |
__func__ |
Retorna o nome qualificado e acrescido da função como uma matriz de char.
|
__LINE__ |
O número da linha no arquivo de origem atual. O número da linha é um literal de inteiro decimal. Pode ser alterada com uma política de #line. |
__STDC__ |
Indica a conformidade com o padrão ANSI/ISO C99. Definido como if inteiro constante literal 1 somente o /Za recebe o opção de compilador e você não está compilando o código C++; caso contrário, será indefinido. |
__TIME__ |
A hora de compilação mais recente do arquivo de origem atual. A hora é uma cadeia de caracteres literal do formato hh:mm:ss. |
__TIMESTAMP__ |
A data e hora da modificação mais recente do arquivo de origem atual, expressa como um literal de cadeia de caracteres no formato Ddd Mmm Date hh:mm:ss yyyy, onde Ddd é o dia da semana abreviado e Date é um inteiro de 1 a 31. |
Macros predefinidos específicos da Microsoft
Macro |
Descrição |
---|---|
_ATL_VER |
Define a versão ATL, codificada como um literal inteiro. |
__AVX__ |
Definido quando /arch:AVX ou /arch:AVX2 é especificado. |
__AVX2__ |
Definido quando /arch:AVX2 é especificado. |
_CHAR_UNSIGNED |
O tipo char padrão é sem sinal. Definido quando /J é especificado. |
__CLR_VER |
Define a versão do Common Language Runtime usado quando o aplicativo foi compilado. O valor retornado é um literal inteiro codificado no seguinte formato: Mmmbbbbb onde,
|
__cplusplus_cli |
Definido quando você compila com /clr, /clr:pure ou /clr:safe. Valor de __cplusplus_cli é o 200406 literal de inteiro. __cplusplus_cli é aplicado em toda a unidade de conversão.
|
__cplusplus_winrt |
Definido quando você usa a opção /ZW para compilar. O valor de cplusplus_winrt é o 201009 literal de inteiro. |
__COUNTER__ |
Expande para um número inteiro literal começando com 0 e acrescenta 1 sempre que ele é usado em um arquivo de origem ou cabeçalhos do arquivo de origem incluídos. __COUNTER__ lembra seu estado quando você usa cabeçalhos pré-compilados. O exemplo a seguir usa __COUNTER__ para atribuir identificadores exclusivos para três objetos diferentes do mesmo tipo. Primeiro, assume a definição de classe a seguir. O construtor aceita um inteiro como um parâmetro.
No principal, o aplicativo declara três objetos do tipo exampleClass, usando __COUNTER__ como o parâmetro identificador exclusivo.
|
__cplusplus |
Definido para programas do C++ somente. |
_CPPRTTI |
Definido para o código compilado com /GR (Habilita Informação de Tipo em Tempo de Execução). |
_CPPUNWIND |
Definido para o código compilado, usando uma do /EH (modelo de tratamento de exceções) sinalizadores. |
_DEBUG |
|
_DLL |
Definido quando /MD ou /MDd (Multithreaded DLL) é especificado. |
__FUNCDNAME__ |
Válido somente em uma função. Define o nome decorado da função como um literal de cadeia de caracteres. __FUNCDNAME__ não é expandido se você usar a opção do compilador /EP ou /P. O exemplo a seguir usa as macros __FUNCDNAME__, __FUNCSIG__ e __FUNCTION__ para exibir informações de função.
|
__FUNCSIG__ |
Válido somente em uma função. Define a assinatura da função como um literal de cadeia de caracteres. __FUNCSIG__ não é expandido se você usar a opção do compilador /EP ou /P. Em um sistema operacional de 64 bits, a convenção de chamada é __cdecl por padrão. Para ver um exemplo, consulte __FUNCDNAME__. |
__FUNCTION__ |
Válido somente em uma função. Define o nome não decorado da função como um literal de cadeia de caracteres. __FUNCTION__ não é expandido se você usar a opção do compilador /EP ou /P. Para ver um exemplo, consulte __FUNCDNAME__. |
_INTEGRAL_MAX_BITS |
Reporta o tamanho máximo (em bits) para um tipo integral como um literal inteiro.
|
_M_AMD64 |
Definido para compilações destinados x64 processadores. |
_M_ARM |
Definido para compilações destinados a processadores ARM. |
_M_CEE |
Definido para uma compilação que usa qualquer forma de /clr (/clr:oldSyntax, /clr:safe, por exemplo). |
_M_CEE_PURE |
Definido para uma compilação que usa /clr:pure. |
_M_CEE_SAFE |
Definido para uma compilação que usa /clr:safe. |
_M_IX86 |
Definido para compilações destinados x86 processadores. Isso não é definido para processadores x64. |
_M_ARM_FP |
Expande para um valor literal inteiro indicando qual /arch opção de compilador foi usada:
|
_M_IX86_FP |
Expande para um valor literal inteiro indicando qual /arch opção de compilador foi usada:
|
_M_X64 |
Definido para compilações destinados x64 processadores. |
_MANAGED |
Definido como 1 quando /clr for especificado. |
_MFC_VER |
Define a versão MFC, codificada como um literal inteiro. |
_MSC_BUILD |
É avaliada como um inteiro que contém o componente de número de revisão do número de versão do compilador literal. O número de revisão é o quarto componente do número de versão delimitado por período. Por exemplo, se o número de versão do compilador do Visual C++ for 15.00.20706.01, a macro _MSC_BUILD será avaliada em 1. |
_MSC_EXTENSIONS |
Essa macro é definida quando você compila com a opção do compilador /Ze (padrão). Seu valor, quando definido, é 1. |
_MSC_FULL_VER |
É avaliada como um literal de inteiro que codifica o maior, menor e criar componentes de número do número de versão do compilador. O número principal é o primeiro componente do número de versão delimitado por ponto, o número secundário é o segundo componente e o número de compilação é o terceiro componente. Por exemplo, se o número de versão do compilador do Visual C++ for 15.00.20706.01, a macro _MSC_FULL_VER será avaliada em 150020706. Digite cl /? na linha de comando para exibir o número de versão do compilador. |
_MSC_VER |
É avaliada como um inteiro literal que codifica os componentes de número principais e secundárias do número de versão do compilador. O número principal é o primeiro componente do número de versão delimitado por ponto e o número secundário é o segundo componente. Por exemplo, se o número de versão do compilador do Visual C++ for 17.00.51106.1, a macro _MSC_VER será avaliada em 1700. Digite cl /? na linha de comando para exibir o número de versão do compilador. |
__MSVC_RUNTIME_CHECKS |
Definido quando uma das opções do compilador de /RTC é especificada. |
_MT |
Definido quando /MD ou /MDd (Multithreaded DLL) ou /MT ou /MTd (Multithreaded) são especificados. |
_NATIVE_WCHAR_T_DEFINED |
Definido quando /Zc:wchar_t é usado. |
_OPENMP |
Definido ao compilar com /openmp, é avaliada como um inteiro literal que representa a data da especificação de OpenMP implementada pelo Visual C++.
|
_VC_NODEFAULTLIB |
Definido quando /Zl é usada, consulte /Zl (omitir nome da biblioteca padrão) para obter mais informações. |
_WCHAR_T_DEFINED |
Definido quando /Zc:wchar_t é usado ou se wchar_t é definido em um arquivo de cabeçalho do sistema incluído em seu projeto. |
_WIN32 |
Definido para aplicativos do Win32 e Win64. Sempre definido. |
_WIN64 |
Definido para aplicativos do Win64. |