Előre definiált makró
A Visual C ++ fordító meghatározza a kész előfeldolgozó makrókat, a nyelv (C vagy C ++), a fordítási cél és a kiválasztott fordító paraméterei alapján.
A Visual C ++ támogatja az ANSI / ISO C99 szabvány és az ISO C ++ 14 szabvány által meghatározott előre definiált előfeldolgozó makrókat. A megvalósítás számos előfeldolgozó makrót is támogat a Microsoftban. Néhány makrót csak bizonyos környezeti vagy fordítói beállítások esetén határoztak meg. Ha nincs megadva, akkor a makrókat a konverziós rekordban definiálják, mintha a / D argumentum argumentumként lettek megadva a fordítóhoz. Meghatározásakor a makrókat az összeállítás előtti feldolgozás előtt feldolgozzák. Az előre definiált makrók nem fogadnak el érveket, és nem lehet felülírni őket.
A fordító támogatja ezt az előre definiált azonosítót, amelyet az ISO szabvány C99 és az ISO C ++ 11 határoz meg.
__func__ hiányos és undecorated név a függvényfüggvénynek a helyi static ``const array char függvényeként.
A fordító támogatja a következő előre definiált makrókat, amelyeket az ISO C99 és C ++ 14 ISO szabványok definiálnak.
A __cplusplus definíciója az egész literum értéke, ha az átalakítási rekord C ++ -ként fordul elő. Ellenkező esetben nincs meghatározva.
__DATE__ Az aktuális forrásfájl összeállításának dátuma. A dátum a hossza literál konstans húrja a mmm dd yyyy formátumban. A hónap neve Mmm egybeesik a rövidített hónap nevével a C asctime függvény futási könyvtárának létrehozásakor. Az első karakter dd dátuma az a hely, ha az érték kisebb, mint 10. Ez a makró mindig definiálva van.
__FILE__ az aktuális forrásfájl neve. A __FILE__ kiterjesztésre kerül egy karakterlista számára. A fájl teljes elérési útjának megjelenítéséhez használja az / FC (a forrásfájl teljes elérési útját a diagnosztikában). Ez a makró mindig definiálva van.
A __LINE__ az aktuális forrásfájl sorának egész számát jelenti. A __LINE__ makró értéke megváltoztatható a #line irányelv használatával. Ez a makró mindig definiálva van.
A __STDC__ csak akkor definiálható 1-nek, ha C-re fordítja, és / Za megadja a fordító opciót. Ellenkező esetben nincs meghatározva.
A __STDC_HOSTED__ értéke 1, ha a megvalósítás egy hostált megvalósítás. támogatja az összes szükséges szabványkönyvtárt. Egyébként 0-nak van megadva.
A __STDCPP_THREADS__ csak akkor definiálódott 1-nek, ha a programnak több végrehajtási tétele is lehet, és C ++ -ként fordul elő. Ellenkező esetben nincs meghatározva.
__TIME__ az előfeldolgozási konverziós rekord fordítási ideje. Az idő hh karakterek halmaza. ugyanaz, mint a C asctime függvény futásidejű könyvtára által visszaadott idő. Ez a makró mindig definiálva van.
A _CPPRTTI az 1, ha / GR (a futásidejű típusokra vonatkozó információkat tartalmaz) a fordítói opció határozza meg. Ellenkező esetben nincs meghatározva.
_DEBUG értéke 1, ha / LDd. / MDd. vagy / MTd a fordító opcióra van állítva. Ellenkező esetben nincs meghatározva.
_DLL az 1-ben van definiálva, ha / MDd vagy / MDd van beállítva a fordító opcióra (Multithreaded DLL). Ellenkező esetben nincs meghatározva.
A __FUNCDNAME__ egy olyan karakterlánc, amely a külső függvény díszített nevét tartalmazza. A makró csak a függvényen belül van definiálva. __FUNCDNAME__ a makró nem bontakozik ki, ha az / EP vagy a / P fordító opciót használja.
Ebben a példában __FUNCDNAME__ használatos. __FUNCSIG__. és __FUNCTION__ makrók a funkcióval kapcsolatos információk megjelenítéséhez.
A __FUNCSIG__ egy olyan karakterlánc, amely a beviteli függvény aláírását tartalmazza. A makró csak a függvényen belül van definiálva. A __FUNCSIG__ makró nem bontakozik ki, ha az / EP vagy a / P fordító opciót használja. Amikor egy 64 bites terminálra fordít, a híváskonvenció alapértelmezés szerint __cdecl. Használatának példáját lásd: __FUNCDNAME__ makró.
A __FUNCTION__ egy olyan karakterlánc, amely tartalmazza a kiterjesztési függvény külső nevét. A makró csak a függvényen belül van definiálva. __FUNCTION__ makró nem bontakozik ki, ha az / EP vagy a / P fordító opciót használja. Használatának példáját lásd: __FUNCDNAME__ makró.
_INTEGRAL_MAX_BITS egészként meghatározott 64 literes érték, a maximális méret (bitekben) egy egész típusú nem vektor. Ez a makró mindig definiálva van.
A INTELLISENSE__ az 1 a Visual Studio Integrált Fejlesztési Környezet IntelliSense fordítói átjárójában van definiálva. Ellenkező esetben nincs meghatározva. Ez a makró használható az IntelliSense fordító kódjának megóvására, és nem érti meg, és használja azt az összeszerelés és az IntelliSense fordító közötti váltáshoz. További információért tekintse meg az IntelliSense teljesítményének hibaelhárításának tippjeit.
Az _ISO_VOLATILE értéke 1, ha / volatile: az iso a fordító opcióra van állítva. Ellenkező esetben nincs meghatározva.
_KERNEL_MODE az 1-ben van megadva, ha a / kernel opció a fordító opcióra van állítva. Ellenkező esetben nincs meghatározva.
A _M_AMD64 egy egész literumként van definiálva, az x64-es processzor értéke 100-nak a fordításhoz. Ellenkező esetben nincs meghatározva.
A _M_ARM az ARM processzorokra szánt összeállításokhoz 7-es egész szám szerinti érték. Ellenkező esetben nincs meghatározva.
_M_ARM_ARMV7VE értéke 1, ha / arch: ARMv7VE az ARM processzorokra szánt kompilációk fordítói beállítására van beállítva. Ellenkező esetben nincs meghatározva.
A _M_ARM_FP az egész literenkénti érték, amely azt jelzi, hogy az archív opcióra van állítva, ha az összeállítás cél ARM processzorokra vonatkozik. Ellenkező esetben nincs meghatározva.
A 30-39 tartományban, ha / arch van megadva az ARM paraméter, az ARM (VFPv3) alapértelmezett architektúráját jelző érték meg van adva.
A 40-49 tartományban, ha / arch: VFPv4 telepítve van.
Az / arch (ARM) szakaszban további információkat talál.
A _M_ARM64 a 64 bites ARM processzorokhoz készült összeállításokhoz 1-hez tartozik. Ellenkező esetben nincs meghatározva.
_M_CEE értéke 001 Ha bármelyik / CLR (CLR összeállítás) a fordító opcióra van állítva. Ellenkező esetben nincs meghatározva.
_M_CEE_PURE definíciója 001 Ha / CLR: tiszta a fordító opció megadása. Ellenkező esetben nincs meghatározva.
_M_CEE_SAFE értéke 001 Ha a / CLR: safe beállítás van beállítva a fordító opcióra. Ellenkező esetben nincs meghatározva.
_M_FP_EXCEPT definiált 1, ha / fp: a / / fp: szigorú kivételével a fordító opció meg van adva. Ellenkező esetben nincs meghatározva.
A _M_FP_FAST 1-et definiálja, ha / fp: gyors a fordító opcióra állítva. Ellenkező esetben nincs meghatározva.
_M_FP_PRECISE definiált 1 ha / fp: megadja a pontos fordító opciót. Ellenkező esetben nincs meghatározva.
_M_FP_STRICT értéke 1, ha / fp: szigorú a fordító opcióra van állítva. Ellenkező esetben nincs meghatározva.
A _M_IX86 egy egész literal van definiálva, az x86 processzor értéke 600 összeállításnak felel meg. Ez a makró nincs meghatározva x64 vagy ARM kompilációs célokhoz.
_M_IX86_FP az egész literál értékének felel meg, amely meghatározza / beállítja a beállított fordító paramétert vagy az alapértelmezett értéket. Ez a makró mindig meghatározásra kerül, amikor a célobjektum az x86 processzort állítja össze. Ellenkező esetben nincs meghatározva. Adott esetben az érték:
0, ha / arch: IA32 a fordító opció lett beállítva.
1, ha / arch: SSE, beállította a fordítót.
2 ha / arch: SSE2. / arch: AVX vagy / arch: AVX2, a fordítóprogram beállítása megtörtént. Ezt az értéket alapértelmezésben használják, ha a / arch nem írta be a fordító opciót. Amikor / arch: AVX van megadva, a __AVX__ makró is meg van adva. Amikor / arch: AVX2 van megadva, mind a __AVX__, mind a __AVX2__ is meg van határozva.
A / arch-szakaszban (x86).
_M_X64 az egész literálként van definiálva, az x64-es processzor 100-as értékkel rendelkezik a fordításhoz. Ellenkező esetben nincs meghatározva.
_MANAGED az 1-es, ha a / CLR beállítása a fordító opcióra van állítva. Ellenkező esetben nincs meghatározva.
A _MSC_EXTENSIONS értéke 1, ha a / Ze (mellékelve a nyelvi kiterjesztéseket) az alapértelmezett fordítóprogramhoz van beállítva. Ellenkező esetben nincs meghatározva.
A __MSVC_RUNTIME_CHECKS értéke 1, ha az egyik / RTC-ben megadja a fordítói opciókat. Ellenkező esetben nincs meghatározva.
_MT definiálva 1, ha / MD vagy / MDd (Multithreaded DLL) vagy / MT vagy / MTd van megadva (multithreaded). Ellenkező esetben nincs meghatározva.
_NATIVE_WCHAR_T_DEFINED definiálva: 1 ha / Zc: a fordító opció megadása. Ellenkező esetben nincs meghatározva.