Macro predefinite

Vengono elencate le macro predefinite ANSI C e di implementazione Microsoft C++.

Il compilatore riconosce le macro predefinite ANSI C e l'implementazione Microsoft C++ fornisce diversi di più.Queste macro non accetta argomenti e non possono essere ridefinite.Alcune macro predefinite elencate di seguito vengono definite con più valori.Vedere le seguenti tabelle per ulteriori informazioni.

Macro predefinite Conformi con ANSI

Macro

Descrizione

__DATE__

La data di compilazione del file di origine corrente.La data è un valore letterale stringa del form Yyyy dd Mmm.Il nome del mese Mmm è identico per le date di generate dalla funzione di libreria asctime dichiarato in TIME.H.

__FILE__

Il nome del file di origine corrente.__FILE__ genera una stringa racchiusa tra virgolette doppie.Per assicurarsi che il percorso completo del file video, utilizzare /FC (Percorso completo del file di codice sorgente nella diagnostica).

__LINE__

Il numero di riga nel file di origine corrente.Il numero di riga è una costante Integer decimale.Può essere modificato con una direttiva #line.

__STDC__

Indica la conformità completa con lo standard ANSI C.Definito come costanti Integer 1 solo se l'opzione del compilatore /Za viene specificata e si compila il codice C++, in caso contrario è definito.

__TIME__

Il periodo di compilazione più recente del file di origine corrente.Il tempo è un valore letterale stringa del form formato hh: mm: ss.

__TIMESTAMP__

La data e l'ora dell'ultima modifica del file di origine corrente, espressa come valore letterale stringa nel formato Hh data DDD Mmm: mm: yyyy ss, in cui DDD è il giorno della settimana abbreviato e data è un numero da 1 a 31.

Macro predefinite Specifiche microsoft

Macro

Descrizione

_ATL_VER

Definisce la versione ATL.

In Visual Studio 2010, _ATL_VER viene definito come 0x1000.

_CHAR_UNSIGNED

Il tipo predefinito char è senza segno.Definito se /J è specificato.

__CLR_VER

Definisce la versione di Common Language Runtime utilizzato quando l'applicazione è stata compilata.Il valore restituito sarà nel formato seguente:

Mmmbbbbb

dove:

  • M è la versione principale del runtime

  • mm è la versione secondaria del runtime

  • bbbbb è il numero di compilazione.

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

__cplusplus_cli

Definito se si utilizza /clr, /clr:pure, o /clr:safe.Il valore di __cplusplus_cli è 200406.Il __cplusplus_cli è attivo in unità di conversione.

// 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__

Si espande un numero intero che iniziano con 0 e che incrementa da 1 ogni volta che viene utilizzato in un file di origine o nelle intestazioni incluse del file di origine.__COUNTER__ memorizza il relativo stato quando si utilizzano intestazioni precompilate.

Nell'esempio riportato __COUNTER__ per assegnare identificatori univoci a tre oggetti diverse dello stesso tipo.

Innanzitutto, si supponga che la definizione di classe seguente.Il costruttore accetta un intero come parametro.

Nella classe principale, l'applicazione viene dichiarata tre oggetti di tipo exampleClass, utilizzando __COUNTER__ come parametro dell'identificatore univoco.

__cplusplus

Definito per i programmi C++ solo.

_CPPRTTI

Definito per il codice compilato con /GR (abilitare le informazioni sul tipo di runtime.

_CPPUNWIND

Definito per il codice compilato con /GX (attivare la gestione delle eccezioni).

_DEBUG

Definito se si utilizza /LDd, /MDde /MTd.

_DLL

Definito se /MD o /MDd (DLL con multithreading è specificato.

__FUNCDNAME__

Valido solo in una funzione.Definisce nome decorato della funzione di inclusione come stringa.

__FUNCDNAME__ non viene espanso se si utilizza l'opzione del compilatore /P o /EP.

Nell'esempio riportato __FUNCDNAME__, __FUNCSIG__e macro __FUNCTION__ per visualizzare le informazioni di funzione.

__FUNCSIG__

Valido solo in una funzione.Definisce la firma della funzione di inclusione come stringa.

__FUNCSIG__ non viene espanso se si utilizza l'opzione del compilatore /P o /EP.

In un sistema operativo a 64 bit, la convenzione di chiamata è __cdecl per impostazione predefinita.

Per un esempio, vedere __FUNCDNAME__.

__FUNCTION__

Valido solo in una funzione.Definisce il nome non decorato della funzione di inclusione come stringa.

__FUNCTION__ non viene espanso se si utilizza l'opzione del compilatore /P o /EP.

Per un esempio, vedere __FUNCDNAME__.

_INTEGRAL_MAX_BITS

Indica la dimensione massima (in bit) per un tipo integrale.

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

_M_ALPHA

Definito per le piattaforme ALFABETICHE di (alpha più supportati).

_M_AMD64

Definito per i processori x64.

_M_CEE

Definito per una compilazione che utilizza un formato /clr (/clr:oldSyntax, /clr:safe, ad esempio).

_M_CEE_PURE

Definito per una compilazione che utilizza /clr:pure.

_M_CEE_SAFE

Definito per una compilazione che utilizza /clr:safe.

_M_IX86

Definito per i processori x86.Vedere la tabella valori per _M_IX86 riportato di seguito per ulteriori informazioni.Ciò non è definita per i processori x64.

_M_IA64

Definito per i processori a 64 bit della famiglia del processore Itanium.

_M_ARM_FP

Si espande a un'indicazione di valoreopzione del compilatore /arch è stata utilizzata:

  • Nell'intervallo 30-39 se nessuna opzione del MONITORAGGIO /arch è stata specificata, indicando l'architettura predefinita per il monitoraggio ARM è stato utilizzatoVFPv3().

  • Nell'intervallo 40-49 se /arch:VFPv4 è stato utilizzato.

  • Per ulteriori informazioni, vedere /arch (x86).

_M_IX86_FP

Si espande a un'indicazione di valoreopzione del compilatore /arch è stata utilizzata:

  • 0 se /arch:IA32 è stato utilizzato.

  • 1 se /arch:SSE è stato utilizzato.

  • 2 se /arch:SSE2 è stato utilizzato.Questo valore è l'impostazione predefinita se /arch non è stato specificato.

  • Per ulteriori informazioni, vedere /arch (x86).

_M_MPPC

Definito per la piattaforma Macintosh di potenza (più supportati).

_M_MRX000

Definito per le piattaforme di MIPS (più supportati).

_M_PPC

Definito per le piattaforme PowerPC (più supportati).

_M_X64

Definito per i processori x64.

_MANAGED

Definito come 1 quando /clr è specificato.

_MFC_VER

Definisce la versione MFC.Ad esempio, in Visual Studio 2010, _MFC_VER viene definito come 0x0A00.

_MSC_BUILD

Valuta alla parte del numero di revisione il numero di versione del compilatore.Il numero di revisione è la quarta parte del numero di versione il cui nome contenga punti.Ad esempio, se il numero di versione del compilatore Visual C++ è 15.00.20706.01, la macro _MSC_BUILD restituisce 1.

_MSC_EXTENSIONS

Questa macro viene definita quando si utilizza l'opzione del compilatore /Ze (impostazione predefinita).Il valore, una volta definito, è 1.

_MSC_FULL_VER

Valuta componenti principali, subordinate e il numero di build del numero di versione del compilatore.Il numero principale è la prima parte del numero di versione il cui nome contenga punti separato, il numero minore è la seconda parte e il numero di build è la terza componente.Ad esempio, se il numero di versione del compilatore Visual C++ è 15.00.20706.01, la macro _MSC_FULL_VER restituisce 150020706.Digitare cl /? la riga di comando per visualizzare il numero di versione del compilatore.

_MSC_VER

Restituisce il maggiore e componenti del numero minore numero di versione del compilatore.Il numero principale è la prima parte del numero di versione il cui nome contenga punti separato e il numero minore è la seconda parte.

Ad esempio, se il numero di versione del compilatore Visual C++ è 15.00.20706.01, la macro _MSC_VER restituisce 1500.

In Visual Studio 2010, _MSC_VER è definito come 1600.

__MSVC_RUNTIME_CHECKS

Definito se una delle opzioni del compilatore /RTC è specificata.

_MT

Definito se /MD o /MDd (DLL con multithreading o /MT o /MTd (con multithreading è specificato.

_NATIVE_WCHAR_T_DEFINED

Definito se /Zc: wchar_t viene utilizzato.

_OPENMP

Definito se la compilazione con /openmp, restituisce un Integer che rappresenta la data della specifica di OpenMP implementata da Visual C++.

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

_VC_NODEFAULTLIB

Definito se /Zl viene utilizzato; vedere /Zl (Omette il nome della libreria predefinita) per ulteriori informazioni.

_WCHAR_T_DEFINED

Definito se /Zc: wchar_t utilizzato o se wchar_t viene definito in un file di intestazione del sistema associato al progetto.

_WIN32

Definito per le applicazioni Win32 e Win64.Sempre definita.

_WIN64

Definito per le applicazioni per Win64.

_Wp64

Definito quando si specificano /Wp64.

Come illustrato nella tabella seguente, il compilatore genera un valore per gli identificatori del preprocessore che riflettono l'opzione del processore specificato.

Valori per _M_IX86

Opzione nell'ambiente di sviluppo

Opzione della riga di comando

Valore risultante

Combinazione

/GB

_M_IX86 = 600 (impostazione predefinita.I compilatori futuri genereranno un valore diverso per riflettere il processore dominante.)

Pentium

/G5

_M_IX86 = 500

Pentium pro, Pentium SECONDA e Pentium III

/G6

_M_IX86 = 600

80386

/G3

_M_IX86 = 300

80486

/G4

_M_IX86 = 400

Vedere anche

Riferimenti

Macro (C/C++)

Operatori del preprocessore

Direttive per il preprocessore