Macros predefinidas

Muestra las macros predefinidas de ANSI C y de la implementación de Microsoft C++.

El compilador reconoce las macros predefinidas ANSI C y la implementación de Microsoft C++ proporciona varios más.Estas macros no toman ningún argumento y no se pueden volver a definir.Algunas de las macros predefinidas enumeradas abajo se definen con varios valores.Consulte las tablas siguientes para obtener más información.

Macros predefinidas ANSI- bajo

Macro

Descripción

__DATE__

Fecha de compilación del archivo de código fuente actual.La fecha es un literal de cadena con el formato dd MMM yyyy.El nombre de mes MMM es igual como por fechas generadas por la función de biblioteca asctime declarado en TIME.H.

__FILE__

El nombre del archivo de código fuente actual.__FILE__ se expande a una cadena entre comillas.Para asegurarse de que la ruta de acceso completa al archivo está presente, utilice /FC (Ruta de acceso completa de archivo de código fuente en diagnósticos).

__LINE__

El número de línea en el archivo de código fuente actual.El número de línea es una constante entera decimal.Se puede cambiar con una directiva de #line .

__STDC__

Indica la conformidad completa con el estándar de ANSI C.Definido como la constante entera 1 únicamente si se especifica la opción del compilador /Za y no están compilando el código de C++; si no está definido.

__TIME__

El tiempo de compilación más reciente del archivo de código fuente actual.El tiempo es un literal de cadena con el formato hh: mm: ss.

__TIMESTAMP__

Fecha y hora de modificación del archivo de código fuente actual, expresado como un literal de cadena con el formato Hh de fecha de DDD Mmm: mm: ss yyyy, donde es el día DDD abreviado de la semana y de Fecha es un número entero de 1 a 31.

Macros predefinidas Microsoft-Específicas

Macro

Descripción

_ATL_VER

Define la versión ATL.

En Visual Studio 2010, _ATL_VER se define como 0x1000.

_CHAR_UNSIGNED

El tipo predeterminado de char es sin signo.Se define cuando se especifica /J .

__CLR_VER

Define la versión de Common Language Runtime se usa cuando la aplicación se compiló.El valor devuelto está en el formato siguiente:

Mmmbbbbb

donde

  • M es la versión principal del runtime

  • mm es la versión secundaria del runtime

  • bbbbb es el número de compilación.

// clr_ver.cpp
// compile with: /clr
using namespace System;
int main() {
   Console::WriteLine(__CLR_VER);
}

__cplusplus_cli

Se define cuando se compila con /clr, /clr:pure, o /clr:safe.El valor de __cplusplus_cli es 200406.El __cplusplus_cli está vigente en la unidad de traducción.

// cplusplus_cli.cpp
// compile with: /clr
#include "stdio.h"
int main() {
   #ifdef __cplusplus_cli
      printf("%d\n", __cplusplus_cli);
   #else
      printf("not defined\n");
   #endif
}

__COUNTER__

Expanda un entero que empieza por 0 y se incrementa en 1 cada vez que se utiliza en un archivo de código fuente o encabezados incluidos del archivo de código fuente.__COUNTER__ recuerda a su estado cuando utiliza encabezados precompilados.

El ejemplo siguiente utiliza __COUNTER__ para asignar identificadores únicos a tres diferentes objetos del mismo tipo.

Primero, suponga la siguiente definición de clase.El constructor toma un entero como parámetro.

En main, la aplicación declara tres objetos de exampleClassescrito, mediante __COUNTER__ como parámetro de identificador único.

__cplusplus

Definido para los programas de sólo C++.

_CPPRTTI

Definido para el código compilado con /GR (información de tipo habilitada en tiempo de ejecución).

_CPPUNWIND

Definido para el código compilado con /GX (control de excepciones de permisos).

_DEBUG

Se define cuando se compila con /LDd, /MDd, y /MTd.

_DLL

Se define cuando se especifica /MD o /MDd Multiproceso (DLL).

__FUNCDNAME__

Solo es válido en una función.Define nombre representativo de la función que agrega como cadena.

__FUNCDNAME__ no se expande si utiliza la opción del compilador de /EP o de /P .

El ejemplo siguiente utiliza __FUNCDNAME__, __FUNCSIG__, y las macros de __FUNCTION__ para mostrar la información de la función.

__FUNCSIG__

Solo es válido en una función.Define la signatura de la función que agrega como cadena.

__FUNCSIG__ no se expande si utiliza la opción del compilador de /EP o de /P .

En un sistema operativo de 64 bits, la convención de llamada es __cdecl de forma predeterminada.

Vea __FUNCDNAME__ para obtener un ejemplo.

__FUNCTION__

Solo es válido en una función.Define el nombre representativo de la función que agrega como cadena.

__FUNCTION__ no se expande si utiliza la opción del compilador de /EP o de /P .

Vea __FUNCDNAME__ para obtener un ejemplo.

_INTEGRAL_MAX_BITS

Designa el tamaño máximo (en bits) para un tipo entero.

// integral_max_bits.cpp
#include <stdio.h>
int main() {
   printf("%d\n", _INTEGRAL_MAX_BITS);
}

_M_ALPHA

Definido para plataformas Alpha de DEC (compatibles no más).

_M_AMD64

Definido para los procesadores x64.

_M_CEE

Definido para una compilación que utiliza cualquier formulario de /clr (/clr:oldSyntax, /clr:safe, por ejemplo).

_M_CEE_PURE

Definido para una compilación que utiliza /clr:pure.

_M_CEE_SAFE

Definido para una compilación que utiliza /clr:safe.

_M_IX86

Definido para los procesadores x86.Vea la tabla de valores para _M_IX86 siguiente para obtener más información.Esto no se define para los procesadores x64.

_M_IA64

Definido para los procesadores de 64 bits de la familia de procesadores de Itanium .

_M_ARM_FP

Expanda un valor que indica qué opción del compilador /arch se utilizó:

  • En el intervalo 30-39 si no se especificó ninguna opción de /arch ARM, indicando la arquitectura predeterminada para la ARM se utilizó (VFPv3).

  • En el intervalo 40-49 si /arch:VFPv4 se utilizó.

  • Para obtener más información, consulte /arch (x86).

_M_IX86_FP

Expanda un valor que indica qué opción del compilador /arch se utilizó:

  • 0 si /arch:IA32 se utilizó.

  • 1 si /arch:SSE se utilizó.

  • 2 si /arch:SSE2 se utilizó.Este valor es el valor predeterminado si /arch no se especificó.

  • Para obtener más información, consulte /arch (x86).

_M_MPPC

Definidos para las plataformas de Power Macintosh (compatibles no más).

_M_MRX000

Definidos para las plataformas de MIPS (compatibles no más).

_M_PPC

Definido para plataformas PowerPC (compatibles no más).

_M_X64

Definido para los procesadores x64.

_MANAGED

Definido en 1 cuando se especifica /clr .

_MFC_VER

Define la versión de MFC.Por ejemplo, en Visual Studio 2010, _MFC_VER se define como 0x0A00.

_MSC_BUILD

Evalúa el componente de número de revisión del número de versión del compilador.El número de revisión es el cuarto componente de número de versión período- delimitado.Por ejemplo, si el número de versión del compilador de Visual C++ es 15.00.20706.01, la macro de _MSC_BUILD se evalúa como 1.

_MSC_EXTENSIONS

Se define esta macro cuando se compila con la opción del compilador /Ze (valor predeterminado).Su valor, cuando está definido, es 1.

_MSC_FULL_VER

Evalúa el principal, el menor, y componentes del número de compilación del número de versión del compilador.El número principal es el primer componente de número de versión período- delimitados, el número de secundaria es el segundo componente, y el número de compilación es el tercer componente.Por ejemplo, si el número de versión del compilador de Visual C++ es 15.00.20706.01, la macro de _MSC_FULL_VER se evalúa como 150020706.Escriba cl /? en la línea de comandos para ver el número de versión del compilador.

_MSC_VER

Evalúa los componentes principales y secundaria del número del número de versión del compilador.El número principal es el primer componente de número de versión período- delimitado y el número de secundaria es el segundo componente.

Por ejemplo, si el número de versión del compilador de Visual C++ es 15.00.20706.01, la macro de _MSC_VER se evalúa como 1500.

En Visual Studio 2010, _MSC_VER se define como 1600.

__MSVC_RUNTIME_CHECKS

Define cuando una de las opciones del compilador /RTC se especifica.

_MT

Se define cuando se especifica /MD o /MDd (Multiproceso DLL) o /MT o /MTd (Multiproceso).

_NATIVE_WCHAR_T_DEFINED

Se define cuando se utiliza /Zc: wchar_t .

_OPENMP

Definido al compilar con /openmp, la cual el entero que representa la fecha de la especificación de OpenMP implementada por Visual C++.

// _OPENMP_dir.cpp
// compile with: /openmp 
#include <stdio.h> 
int main() {
   printf("%d\n", _OPENMP);
}

_VC_NODEFAULTLIB

Se define cuando se utiliza /Zl ; vea /Zl (Omitir nombres de biblioteca predeterminada) para obtener más información.

_WCHAR_T_DEFINED

Se define cuando se utiliza /Zc: wchar_t o si wchar_t se define en un archivo de encabezado de sistema incluido en su proyecto.

_WIN32

Definido para aplicaciones Win32 y Win64.Siempre definido.

_WIN64

Se define para las aplicaciones para Win64.

_Wp64

Definido al especificar /Wp64.

Como se muestra en la tabla siguiente, el compilador genera un valor para los identificadores de preprocesador que reflejan la opción de procesador especificada.

Valores para _M_IX86

Opción en el entorno de desarrollo

Opción de la línea de comandos

Valor resultante

Combinación

/GB

_M_IX86 = 600 (valor predeterminado.Los compiladores futuros emitirán un valor diferente para reflejar el procesador clave).

Pentium

/G5

_M_IX86 = 500

Pentium Pro, Pentium II, y Pentium III

/G6

_M_IX86 = 600

80386

/G3

_M_IX86 = 300

80486

/G4

_M_IX86 = 400

Vea también

Referencia

Macros (C/C++)

Operadores de preprocesador

Directivas de preprocesador