Udostępnij za pośrednictwem


Wstępnie zdefiniowane makra

Lists the predefined ANSI/ISO C99 and Microsoft C++ implementation preprocessor macros.

Kompilator rozpoznaje wstępnie zdefiniowanych makra preprocessor ANSI/ISO C99 C i implementację Microsoft C++ zawiera kilka innych.Te makra preprocessor nie przyjmuje żadnych parametrów i nie można ponownie zdefiniować.Niektóre makra wstępnie zdefiniowanych wymienione w tym artykule można definiować z wieloma wartościami.

Zgodne ze standardem ANSI wstępnie zdefiniowane makra

Makro

Opis

__DATE__

Data kompilacji bieżącego pliku źródłowego.Data jest ciągiem w postaci literału Mmm dd rrrr.Nazwy miesięcy Mmm jest taka sama, jak w przypadku wartości daty wygenerowane przez funkcję biblioteki asctime zadeklarowane w czasie. H

__FILE__

Nazwa bieżącego pliku źródłowego.__FILE__ rozwija do literałem ciągu.Aby upewnić się, że wyświetlana jest pełna ścieżka do pliku, należy użyć /FC (Pełna ścieżka pliku kodu źródłowego w Diagnostyce).

__func__

Zwraca nazwę niekwalifikowanej i unadorned otaczającego funkcji jako tablicę znaków.

void Foo(){
printf("%s\n", __func__);
} // prints “Foo”

__LINE__

Numer wiersza w bieżącym pliku źródłowego.Numer wiersza jest dziesiętna literału.Możesz zmienić ją z #line dyrektywy.

__STDC__

Wskazuje zgodność ze standardem ANSI/ISO C99.Zdefiniowany jako liczba całkowita literał stałej 1 tylko wtedy, gdy /Za znajduje się opcja kompilatora i nie są kompilacji kodu C++, w przeciwnym razie jest niezdefiniowana.

__TIME__

Ostatni czas kompilacji bieżącego pliku źródłowego.Czas jest ciągiem w postaci literału hh: mm:.

__TIMESTAMP__

Data i godzina ostatniej modyfikacji bieżącego pliku źródłowego, wyrażonej w postaci literału w postaci ciągu Data Ddd Mmm rrrr hh: mm:, gdzie Ddd jest skróconą dzień tygodnia i Data jest liczbą całkowitą od 1 do 31.

Wstępnie zdefiniowane makra specyficzne dla firmy Microsoft

Makro

Opis

_ATL_VER

Definiuje wersji ATL, zakodowane jako literałem liczby całkowitej.

__AVX__

Gdy zdefiniowane /arch:AVX lub /arch:AVX2 jest określony.

__AVX2__

Gdy zdefiniowane /arch:AVX2 jest określony.

_CHAR_UNSIGNED

Domyślna char typu jest podpisany.Gdy zdefiniowane /J jest określony.

__CLR_VER

Definiuje wersję plików wykonywalnych języka używany, gdy został skompilowany aplikacji.Wartość zwracana jest literałem liczby całkowitej zakodowany w następującym formacie:

Mmmbbbbb

w przypadku gdy

  • M jest to główna wersja środowiska wykonawczego

  • mm jest to wersja pomocnicza środowiska wykonawczego

  • bbbbb jest to numer kompilacji.

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

__cplusplus_cli

Definicja podczas kompilacji z /clr, /clr:pure, lub /clr:safe.Wartość __cplusplus_cli jest liczbą całkowitą 200406 literału.__cplusplus_cli jest włączona w całej jednostki tłumaczenia.

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

__cplusplus_winrt

Zdefiniowany przy użyciu /ZW opcję, aby skompilować.Wartość __cplusplus_winrt jest liczbą całkowitą 201009 literału.

__COUNTER__

Rozwija na liczbę całkowitą literału, rozpoczynając od 0 i zwiększany o 1 za każdym razem, gdy jest używany w pliku źródłowym lub uwzględniony nagłówki pliku źródłowego.__COUNTER__ gdy użytkownik korzysta z wstępnie skompilowanej nagłówki są przechowywane jego stan.

W poniższym przykładzie użyto __COUNTER__ do przypisywania unikatowych identyfikatorów dla trzech różnych obiektów tego samego typu.

Najpierw należy założyć poniższej definicji klasy.Konstruktor ma liczbę całkowitą jako parametr.

W głównym, aplikacja deklaruje trzy obiekty typu exampleClass, używając __COUNTER__ jako parametr unikatowy identyfikator.

__cplusplus

Zdefiniowany dla tylko programy w języku C++.

_CPPRTTI

Zdefiniowana dla skompilowany kod z przełączników /GR (Włącz wykonywania informacji o typie).

_CPPUNWIND

Zdefiniowane dla kodu skompilowana przy użyciu jednego z /EH (Model obsługi wyjątku) flagi.

_DEBUG

Definicja podczas kompilacji z /LDd, /MDd, i /MTd.

_DLL

Gdy zdefiniowane /MD lub /MDd określono (wielowątkowe DLL).

__FUNCDNAME__

Prawidłowy tylko w funkcji.Definiuje nadany nazwa otaczającego funkcji jako literałem ciągu.

__FUNCDNAME__ nie jest rozwinięta, korzystając z /EP lub /P opcję kompilatora.

W poniższym przykładzie użyto __FUNCDNAME__, __FUNCSIG__, i __FUNCTION__ makra do wyświetlania informacji o funkcji.

__FUNCSIG__

Prawidłowy tylko w funkcji.Określa podpis otaczającego funkcji jako literałem ciągu.

__FUNCSIG__ nie jest rozwinięta, korzystając z /EP lub /P opcję kompilatora.

W 64-bitowym systemie operacyjnym, jest konwencja wywołania __cdecl domyślnie.

Patrz __FUNCDNAME__ przykład.

__FUNCTION__

Prawidłowy tylko w funkcji.Definiuje nazwę bez funkcji otaczającego jako literałem ciągu.

__FUNCTION__ nie jest rozwinięta, korzystając z /EP lub /P opcję kompilatora.

Patrz __FUNCDNAME__ przykład.

_INTEGRAL_MAX_BITS

Raporty maksymalny rozmiar (w bitach) dla typu całkowitego jako liczba całkowita literału.

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

_M_AMD64

Zdefiniowanych na potrzeby kompilacje prowadzących x 64 procesory.

_M_ARM

Zdefiniowany dla kompilacje prowadzących procesorów ARM.

_M_CEE

Definicja kompilacji, korzystającej z dowolną formę /clr (/clr:oldSyntax, /clr:safe, na przykład).

_M_CEE_PURE

Definicja kompilacji, który używa /clr:pure.

_M_CEE_SAFE

Definicja kompilacji, który używa /clr:safe.

_M_IX86

Zdefiniowanych na potrzeby kompilacje prowadzących x 86 procesorów.To nie jest zdefiniowany dla procesorów x 64 procesory.

_M_ARM_FP

Rozszerza się na wartość całkowitą literału wskazaniem, który /arch została użyta opcja kompilatora:

  • W zakresie 30-39, jeśli nie /arch określono opcję ARM, wskazujący architektury domyślny dla ARM użytej (VFPv3).

  • W zakresie 40-49 if /arch:VFPv4 został użyty.

  • Zobacz /arch (x86) uzyskać więcej informacji.

_M_IX86_FP

Rozszerza się na wartość całkowitą literału wskazaniem, który /arch została użyta opcja kompilatora:

  • 0 Jeśli /arch:IA32 został użyty.

  • 1, gdy /arch:SSE został użyty.

  • Jeśli 2 /arch:SSE2, /arch:AVX lub /arch:AVX2 został użyty.Ta wartość jest to domyślne ustawienie, jeśli /arch nie został określony.Gdy /arch:AVX jest określony, makra __AVX__ jest również definiowany.Gdy /arch:AVX2 jest określony, __AVX__ i __AVX2__ również są zdefiniowane.

  • Zobacz /arch (x86) uzyskać więcej informacji.

_M_X64

Zdefiniowanych na potrzeby kompilacje prowadzących x 64 procesory.

_MANAGED

Zdefiniowany jako 1 when /CLR jest określony.

_MFC_VER

Definiuje wersji MFC, zakodowane jako literałem liczby całkowitej.

_MSC_BUILD

Wynikiem jest literałem zawiera składnik numer wersji numer wersji kompilatora liczby całkowitej.Numer wersji jest składnik czwarte numer wersji rozdzielanych okres.Na przykład, jeśli numer wersji kompilatora Visual C++ jest 15.00.20706.01 _MSC_BUILD makra oblicza do 1.

_MSC_EXTENSIONS

Tego makra jest zdefiniowany w przypadku kompilacji z /Ze opcję kompilatora (domyślnie).Podczas definiowania, jego wartość wynosi 1.

_MSC_FULL_VER

Wynikiem jest literał liczby całkowitej, który koduje głównych i pomocniczych i tworzyć liczba składników kompilatora numer wersji.Główny numer jest pierwszy składnik numer wersji rozdzielanych okres, pomocnicza zawiera drugi składnik i numer kompilacji jest trzeci składnik.Na przykład, jeśli numer wersji kompilatora Visual C++ jest 15.00.20706.01 _MSC_FULL_VER makra wynikiem jest 150020706.Typ cl /? w wierszu polecenia, aby wyświetlić numer wersji kompilatora.

_MSC_VER

Wynikiem jest literałem kodującej głównych i pomocniczych numerów składniki numer wersji kompilatora liczby całkowitej.Główny numer jest pierwszy składnik numer wersji rozdzielanych okres i pomocniczych zawiera drugi składnik.

Na przykład, jeśli numer wersji kompilatora Visual C++ jest 17.00.51106.1 _MSC_VER makra wynikiem jest 1700.Typ cl /? w wierszu polecenia, aby wyświetlić numer wersji kompilatora.

__MSVC_RUNTIME_CHECKS

Gdy zdefiniowano jeden z /RTC określono opcje kompilatora.

_MT

Gdy zdefiniowane /MD lub /MDd (wielowątkowe DLL) lub /MT lub /MTd (Multithreaded) jest określony.

_NATIVE_WCHAR_T_DEFINED

Gdy zdefiniowane /Zc:wchar_t jest używany.

_OPENMP

Zdefiniowany w przypadku kompilacji z /openmp, wynikiem jest liczba całkowita literału reprezentujący datę specyfikacji OpenMP implementowana przez program Visual C++.

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

_VC_NODEFAULTLIB

Gdy zdefiniowane /Zl jest używany, zobacz /Zl (Pomiń domyślną nazwę biblioteki) uzyskać więcej informacji.

_WCHAR_T_DEFINED

Gdy zdefiniowane /Zc:wchar_t jest używana lub jeśli wchar_t jest zdefiniowana w pliku nagłówka system zawartych w projekcie.

_WIN32

Zdefiniowany dla aplikacji Win32 i Win64.Zawsze zdefiniowany.

_WIN64

Zdefiniowany dla aplikacji na Win64.

Zobacz też

Informacje

Makra (C/C++)

Operatory preprocesora

Dyrektywy preprocesora