Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Microsoft C/C++ fordító (MSVC) előre definiál bizonyos előprocesszor-makrókat a nyelvtől (C vagy C++), a fordítási céltól és a választott fordítóbeállításoktól függően.
Az MSVC támogatja az ANSI/ISO C99, C11 és C17 szabványok, valamint az ISO C++14, C++17 és C++20 szabványok által megkövetelt előre definiált előfeldolgozó makrókat. Az implementáció számos további Microsoft-specifikus előfeldolgozó makrót is támogat.
Egyes makrók csak adott buildkörnyezetekhez vagy fordítóbeállításokhoz vannak definiálva. A feljegyzett esetek kivételével a makrók úgy vannak definiálva a fordítási egységben, mintha fordítóbeállítás-argumentumként /D
lennének megadva. Definiáláskor az előfeldolgozó kibontja a makrók megadott értékeit a fordítás előtt. Az előre definiált makrók nem vesznek fel argumentumokat, és nem definiálhatók újra.
Standard előre definiált azonosító
A fordító támogatja az ISO C99 és az ISO C++11 által megadott előre definiált azonosítót.
__func__
A belefoglaló függvény nem minősített és nem hitelesített neve függvény-helyi statikus konstanstömbkéntchar
.void example() { printf("%s\n", __func__); } // prints "example"
Standard előre definiált makrók
A fordító támogatja az ISO C99, C11, C17 és ISO C++17 szabványok által meghatározott előre definiált makrókat.
__cplusplus
A fordítási egység C++-ként való lefordításakor egész számkonstansértékként van definiálva. Ellenkező esetben nincs definiálva.__DATE__
Az aktuális forrásfájl fordítási dátuma. A dátum az Mmm dd yyyyy form állandó hosszúságú sztringkonstansa. Az Mmm hónapnév megegyezik a C Runtime Library (CRT) asctime függvény által létrehozott rövidített hónapnévvel. A dátum dd első karaktere egy szóköz, ha az érték kisebb, mint 10. Ez a makró mindig definiálva van.__FILE__
Az aktuális forrásfájl neve.__FILE__
karaktersztring-literálra bont. A fájl teljes elérési útjának megjelenítéséhez használja/FC
a (Diagnosztika forráskódfájljának teljes elérési útját). Ez a makró mindig definiálva van.__LINE__
Az aktuális forrásfájl egész sorszámaként definiálva. Ennek a makrónak az értéke egy#line
irányelv használatával módosítható. Az érték integráltípusa__LINE__
a környezettől függően változhat. Ez a makró mindig definiálva van.__STDC__
1-ként van definiálva, amikor C-ként van lefordítva, és ha a/Za
fordító beállítás meg van adva. A Visual Studio 2022 17.2-es verziójától kezdve az 1-es értékként van definiálva, amikor C-ként van lefordítva, és ha a/Zc:__STDC__
fordító beállítás meg van adva. Ellenkező esetben nincs definiálva.__STDC_HOSTED__
1-ként definiálva, ha a megvalósítás egy üzemeltetett implementáció, amely a teljes szükséges standard kódtárat támogatja. Ellenkező esetben 0-ként van definiálva.__STDC_NO_ATOMICS__
1-ként van definiálva, ha az implementáció nem támogatja az opcionális standard atomokat. Az MSVC-implementáció 1-ként határozza meg, amikor C-ként van lefordítva, és meg van adva a/std
C11 vagy C17 egyik lehetőség.__STDC_NO_COMPLEX__
1-ként van definiálva, ha az implementáció nem támogatja az opcionális standard összetett számokat. Az MSVC-implementáció 1-ként határozza meg, amikor C-ként van lefordítva, és meg van adva a/std
C11 vagy C17 egyik lehetőség.__STDC_NO_THREADS__
1-ként van definiálva, ha az implementáció nem támogatja az opcionális standard szálakat. Az MSVC-implementáció 1-ként határozza meg, amikor C-ként van lefordítva, és meg van adva a/std
C11 vagy C17 egyik lehetőség.__STDC_NO_VLA__
1-ként van definiálva, ha az implementáció nem támogatja a standard változóhosszúságú tömböket. Az MSVC-implementáció 1-ként határozza meg, amikor C-ként van lefordítva, és meg van adva a/std
C11 vagy C17 egyik lehetőség.__STDC_VERSION__
A C-ként való fordításkor és a/std
C11 vagy C17 beállítások egyikének megadása meg van adva. Kiterjeszti a201112L
következőre/std:c11
:201710L
és a/std:c17
.__STDCPP_DEFAULT_NEW_ALIGNMENT__
Ha/std:c17
meg van adva vagy újabb, ez a makró egysize_t
literálra bővül, amely az igazítást nem tudóoperator new
hívás által garantált igazítási értékkel rendelkezik. A nagyobb igazítások egy igazításérzékeny túlterhelésnek lesznek átadva, példáuloperator new(std::size_t, std::align_val_t)
. További információ:/Zc:alignedNew
(C++17 túligazolt foglalás).__STDCPP_THREADS__
Ha és csak akkor, ha egy program több végrehajtási szállal is rendelkezhet, és C++-ként van lefordítva. Ellenkező esetben nincs definiálva.__TIME__
Az előre feldolgozott fordítási egység fordításának időpontja. Az idő a hh:mm:ss űrlap karaktersztring-literálja, ugyanaz, mint a CRT asctime függvény által visszaadott idő. Ez a makró mindig definiálva van.
Microsoft-specifikus előre definiált makrók
Az MSVC más előre definiált makrókat is támogat:
__ARM_ARCH
Az ARM-architektúra verzióját képviselő egész számkonstansként definiálva. Az érték a Armv8-A architektúrához 8-as értékként van definiálva. A 8.1-es és újabb verziók esetében az érték az ARM C nyelvi bővítmény által meghatározott X * 100 + Y képlettel skálázható az alverziókra, például az X.Y-ra. Az Armv8.1__ARM_ARCH
esetében például 8 * 100 + 1 vagy 801. Az ARM-architektúra verziójának beállításához lásd:/arch (ARM64)
. Ez a makró a Visual Studio 2022 17.10-es verziójában lett bevezetve.__ATOM__
1-ként definiálva, ha a/favor:ATOM
fordító beállítás be van állítva, és a fordító célértéke x86 vagy x64. Ellenkező esetben nincs definiálva.__AVX__
1-ként van definiálva, amikor a/arch:AVX
, ,/arch:AVX2
vagy/arch:AVX512
a fordító beállításai meg vannak adva,/arch:AVX10.1
és a fordító célértéke x86 vagy x64. Ellenkező esetben nincs definiálva.__AVX2__
1-ként van definiálva, ha az/arch:AVX2
, vagy/arch:AVX512
a fordító beállítás be van állítva,/arch:AVX10.1
és a fordító célja x86 vagy x64. Ellenkező esetben nincs definiálva.__AVX512BW__
1-ként van definiálva, ha a vagy/arch:AVX512
a/arch:AVX10.1
fordító beállítás be van állítva, és a fordító célértéke x86 vagy x64. Ellenkező esetben nincs definiálva.__AVX512CD__
1-ként van definiálva, ha a vagy/arch:AVX512
a/arch:AVX10.1
fordító beállítás be van állítva, és a fordító célértéke x86 vagy x64. Ellenkező esetben nincs definiálva.__AVX512DQ__
1-ként van definiálva, ha a vagy/arch:AVX512
a/arch:AVX10.1
fordító beállítás be van állítva, és a fordító célértéke x86 vagy x64. Ellenkező esetben nincs definiálva.__AVX512F__
1-ként van definiálva, ha a vagy/arch:AVX512
a/arch:AVX10.1
fordító beállítás be van állítva, és a fordító célértéke x86 vagy x64. Ellenkező esetben nincs definiálva.__AVX512VL__
1-ként van definiálva, ha a vagy/arch:AVX512
a/arch:AVX10.1
fordító beállítás be van állítva, és a fordító célértéke x86 vagy x64. Ellenkező esetben nincs definiálva.__AVX10_VER__
Egész számként definiálva, amely az AVX10 verzióját jelöli, amikor a/arch:AVX10.1
fordító beállítás be van állítva, és a fordító célértéke x86 vagy x64. Ellenkező esetben nincs definiálva._CHAR_UNSIGNED
1-ként van definiálva, ha az alapértelmezettchar
típus nincs aláírva. Ez az érték akkor van definiálva, ha az/J
(alapértelmezett karaktertípus nincs aláírva) fordítóbeállítás be van állítva. Ellenkező esetben nincs definiálva.__CLR_VER
Egész számkonstansként definiálva, amely az alkalmazás fordításához használt Common Language Runtime (CLR) verzióját jelöli. Az érték a futtatókörnyezet főverzióját tartalmazó formábanMmmbbbbb
van kódolva,M
a futtatókörnyezet alverziója, ésmm
a buildszám.bbbbb
__CLR_VER
akkor van definiálva, ha a/clr
fordító beállítás be van állítva. Ellenkező esetben nincs definiálva.// clr_ver.cpp // compile with: /clr using namespace System; int main() { Console::WriteLine(__CLR_VER); }
_CONTROL_FLOW_GUARD
1-ként definiálva, ha a/guard:cf
(Control Flow Guard engedélyezése) fordító beállítás be van állítva. Ellenkező esetben nincs definiálva.__COUNTER__
0-ás kezdetű egész számkonstansra bont. Az érték minden alkalommal 1-zel nő, amikor egy forrásfájlban vagy a forrásfájl belefoglalt fejléceiben használják.__COUNTER__
az előre összeállított fejlécek használatakor megjegyzi annak állapotát. Ez a makró mindig definiálva van.Ez a példa arra használ
__COUNTER__
, hogy egyedi azonosítókat rendeljen három különböző, azonos típusú objektumhoz. AexampleClass
konstruktor paraméterként egy egész számot vesz fel. Ebbenmain
az alkalmazásban az alkalmazás három típusúexampleClass
objektumot deklarál, egyedi azonosítóparaméterként használva__COUNTER__
:// macro__COUNTER__.cpp // Demonstration of __COUNTER__, assigns unique identifiers to // different objects of the same type. // Compile by using: cl /EHsc /W4 macro__COUNTER__.cpp #include <stdio.h> class exampleClass { int m_nID; public: // initialize object with a read-only unique ID exampleClass(int nID) : m_nID(nID) {} int GetID(void) { return m_nID; } }; int main() { // __COUNTER__ is initially defined as 0 exampleClass e1(__COUNTER__); // On the second reference, __COUNTER__ is now defined as 1 exampleClass e2(__COUNTER__); // __COUNTER__ is now defined as 2 exampleClass e3(__COUNTER__); printf("e1 ID: %i\n", e1.GetID()); printf("e2 ID: %i\n", e2.GetID()); printf("e3 ID: %i\n", e3.GetID()); // Output // ------------------------------ // e1 ID: 0 // e2 ID: 1 // e3 ID: 2 return 0; }
__cplusplus_cli
A C++-ként való fordításkor 200406 egész szám konstansértékként van definiálva, és be van állítva egy/clr
fordítóbeállítás. Ellenkező esetben nincs definiálva. A definiált szöveg__cplusplus_cli
a fordítási egység egészében érvényben van.// cplusplus_cli.cpp // compile by using /clr #include "stdio.h" int main() { #ifdef __cplusplus_cli printf("%d\n", __cplusplus_cli); #else printf("not defined\n"); #endif }
__cplusplus_winrt
A C++-ként való fordításkor 201009 egész szám konstansértékként van definiálva, és a/ZW
(Windows Futtatókörnyezet fordítása) fordító beállítás be van állítva. Ellenkező esetben nincs definiálva._CPPRTTI
1-ként van definiálva, ha a/GR
(Típusadatok engedélyezése Run-Time) fordítóbeállítás be van állítva. Ellenkező esetben nincs definiálva._CPPUNWIND
1-ként van definiálva, ha egy/GX
vagy több (Kivételkezelés engedélyezése),/clr
(Common Language Runtime-fordítás) vagy/EH
(Kivételkezelési modell) fordítóbeállítás be van állítva. Ellenkező esetben nincs definiálva._DEBUG
1-ként van definiálva, ha a/LDd
,/MDd
vagy/MTd
a fordító beállítás be van állítva. Ellenkező esetben nincs definiálva._DLL
1-ként van definiálva, ha a/MD
vagy/MDd
a (többszálas DLL) fordítóbeállítás be van állítva. Ellenkező esetben nincs definiálva.__FUNCDNAME__
Sztringkonstansként definiálva, amely a mellékfüggvény kitüntetett nevét tartalmazza. A makró csak egy függvényen belül van definiálva. A__FUNCDNAME__
makró nem lesz kibontva, ha a fordítót vagy/EP
a/P
fordítót használja.Ez a példa a
__FUNCDNAME__
,__FUNCSIG__
és__FUNCTION__
a makrók használatával jeleníti meg a függvényinformációkat.// Demonstrates functionality of __FUNCTION__, __FUNCDNAME__, and __FUNCSIG__ macros void exampleFunction() { printf("Function name: %s\n", __FUNCTION__); printf("Decorated function name: %s\n", __FUNCDNAME__); printf("Function signature: %s\n", __FUNCSIG__); // Sample Output // ------------------------------------------------- // Function name: exampleFunction // Decorated function name: ?exampleFunction@@YAXXZ // Function signature: void __cdecl exampleFunction(void) }
__FUNCSIG__
Sztringkonstansként definiálva, amely tartalmazza a belefoglaló függvény aláírását. A makró csak egy függvényen belül van definiálva. A__FUNCSIG__
makró nem lesz kibontva, ha a fordítót vagy/EP
a/P
fordítót használja. Ha egy 64 bites célhoz van lefordítva, a hívási konvenció alapértelmezés szerint érvényes__cdecl
. A használat példáiért tekintse meg a makrót__FUNCDNAME__
.__FUNCTION__
Sztringkonstansként definiálva, amely a beágyazási függvény fel nem használt nevét tartalmazza. A makró csak egy függvényen belül van definiálva. A__FUNCTION__
makró nem lesz kibontva, ha a fordítót vagy/EP
a/P
fordítót használja. A használat példáiért tekintse meg a makrót__FUNCDNAME__
._INTEGRAL_MAX_BITS
A 64-es egész számkonstansértékként definiálva egy nem vektoros integráltípus maximális mérete (bitekben). Ez a makró mindig definiálva van.// integral_max_bits.cpp #include <stdio.h> int main() { printf("%d\n", _INTEGRAL_MAX_BITS); }
__INTELLISENSE__
Az IntelliSense fordítói átadása során 1-ként definiálva a Visual Studio IDE-ben. Ellenkező esetben nincs definiálva. Ezzel a makróval védheti az IntelliSense fordító által nem értelmezett kódokat, vagy válthat a build és az IntelliSense fordító között. További információ: Hibaelhárítási tippek az IntelliSense lassúságával kapcsolatban._ISO_VOLATILE
1-ként van definiálva, ha a/volatile:iso
fordító beállítás be van állítva. Ellenkező esetben nincs definiálva._KERNEL_MODE
1-ként van definiálva, ha a/kernel
(Kernel módú bináris ) fordító beállítása be van állítva. Ellenkező esetben nincs definiálva._M_AMD64
Az x64-processzorokat vagy ARM64EC megcélzó fordítások 100-as egész számkonstansértékeként definiálva. Ellenkező esetben nincs definiálva._M_ARM
Az ARM-processzorokat megcélzó fordítások 7 egész számkonstansértékeként definiálva. Arm64, ARM64EC és egyéb célok esetében nincs meghatározva._M_ARM_ARMV7VE
1-ként van definiálva, ha a/arch:ARMv7VE
fordító beállítása ARM-processzorokat célzó fordításokhoz van beállítva. Ellenkező esetben nincs definiálva._M_ARM_FP
Egész szám konstansértékként definiálva, amely azt jelzi, hogy melyik/arch
fordítóbeállítás lett beállítva ARM-processzorcélokhoz. Ellenkező esetben nincs definiálva.A 30–39 tartományban lévő érték, ha nem
/arch
adott meg ARM-beállítást, az ARM alapértelmezett architektúrájának beállítását (VFPv3
).Ha be van állítva, akkor a tartomány értéke 40–49
/arch:VFPv4
.További információ:
/arch
(ARM).
_M_ARM64
Az ARM64-et célzó fordításokhoz 1-ként van definiálva. Ellenkező esetben nincs definiálva._M_ARM64EC
Az ARM64EC megcélzott fordításokhoz 1-ként van definiálva. Ellenkező esetben nincs definiálva._M_CEE
001-ként van definiálva, ha a/clr
(Common Language Runtime Compilation) fordítóbeállítás be van állítva. Ellenkező esetben nincs definiálva._M_CEE_PURE
Elavult a Visual Studio 2015-ben. 001-ként van definiálva, ha a/clr:pure
fordító beállítás be van állítva. Ellenkező esetben nincs definiálva._M_CEE_SAFE
Elavult a Visual Studio 2015-ben. 001-ként van definiálva, ha a/clr:safe
fordító beállítás be van állítva. Ellenkező esetben nincs definiálva._M_FP_CONTRACT
A Visual Studio 2022-től kezdve érhető el. 1-ként van definiálva, ha a fordító vagy/fp:contract
a/fp:fast
fordító beállítás be van állítva. Ellenkező esetben nincs definiálva._M_FP_EXCEPT
1-ként van definiálva, ha a fordító vagy/fp:except
a/fp:strict
fordító beállítás be van állítva. Ellenkező esetben nincs definiálva._M_FP_FAST
1-ként van definiálva, ha a/fp:fast
fordító beállítás be van állítva. Ellenkező esetben nincs definiálva._M_FP_PRECISE
1-ként van definiálva, ha a/fp:precise
fordító beállítás be van állítva. Ellenkező esetben nincs definiálva._M_FP_STRICT
1-ként van definiálva, ha a/fp:strict
fordító beállítás be van állítva. Ellenkező esetben nincs definiálva._M_IX86
Az x86-processzorokat megcélzó fordítások 600-as egész számkonstansértékeként definiálva. Ez a makró nincs definiálva x64- vagy ARM-fordítási célokhoz._M_IX86_FP
Olyan egész számkonstansértékként definiálva, amely a/arch
beállított fordítóbeállítást vagy az alapértelmezett értéket jelzi. Ez a makró mindig akkor van definiálva, ha a fordítási cél egy x86-os processzor. Ellenkező esetben nincs definiálva. Definiáláskor az érték a következő:0, ha a
/arch:IA32
fordító beállítás be van állítva.1, ha a
/arch:SSE
fordító beállítás be van állítva.2, ha a
/arch:SSE2
,/arch:AVX
,/arch:AVX2
,/arch:AVX512
vagy/arch:AVX10.1
fordító beállítás be van állítva. Ez az érték az alapértelmezett érték, ha nincs/arch
megadva fordítóbeállítás. Ha/arch:AVX
meg van adva, a makró__AVX__
is definiálva van. Ha/arch:AVX2
meg van adva, mindkettő__AVX__
és__AVX2__
definiálva is van. Ha/arch:AVX512
meg van adva,__AVX__
,__AVX2__
,__AVX512BW__
__AVX512CD__
, ,__AVX512DQ__
, , és__AVX512F__
__AVX512VL__
definiálva is van. Ha/arch:AVX10.1
meg van adva,__AVX__
,__AVX2__
,__AVX512BW__
__AVX512CD__
, ,__AVX512DQ__
, , és__AVX512F__
__AVX512VL__
__AVX10_VER__
definiálva is van.További információ:
/arch
(x86).
_M_X64
Az x64-processzorokat vagy ARM64EC megcélzó fordítások 100-as egész számkonstansértékeként definiálva. Ellenkező esetben nincs definiálva._MANAGED
1-ként van definiálva, ha a/clr
fordító beállítás be van állítva. Ellenkező esetben nincs definiálva._MSC_BUILD
Egész számkonstansként definiálva, amely a fordító verziószámának változatszámelemét tartalmazza. A változatszám a ponthatárolt verziószám utolsó eleme. Ha például a Microsoft C/C++ fordító verziószáma 15.00.20706.01, akkor a_MSC_BUILD
makró 1. Ez a makró mindig definiálva van._MSC_EXTENSIONS
1-ként van definiálva, ha a on-by-default/Ze
(Enable Language Extensions) fordítóbeállítás be van állítva. Ellenkező esetben nincs definiálva._MSC_FULL_VER
Egész számkonstansként definiálva, amely a fordító verziószámának fő, alverzió- és buildszámelemeit kódolja. A fő szám a ponthatárolt verziószám első eleme, az alszám a második elem, a buildszám pedig a harmadik elem.Ha például a Microsoft C/C++ fordítóverziója 19.39.33519,
_MSC_FULL_VER
akkor 193933519. Írja becl /?
a parancssorba a fordító verziószámának megtekintéséhez. Ez a makró mindig definiálva van. A fordítóverziókról további információt a Visual Studio 2017-től kezdődő C++ fordítóverziókkal és kifejezetten a Visual Studio 2017-es kiadásaival kapcsolatos további információkért talál a Visual Studio 2019 16.8-ról, 16.9-es, 16.10-es és 16.11-es verziójáról, amelyek megkülönböztetik őket._MSC_FULL_VER
_MSC_VER
Egész számkonstansként definiálva, amely a fordító verziószámának fő és alszám elemeit kódolja. A fő szám a ponthatárolt verziószám első eleme, az alszám pedig a második elem. Ha például a Microsoft C/C++ fordító verziószáma 17.00.51106.1, az érték_MSC_VER
1700. Írja becl /?
a parancssorba a fordító verziószámának megtekintéséhez. Ez a makró mindig definiálva van.Ha a Visual Studio egy adott verziójában vagy újabb verziójában szeretné tesztelni a fordító kiadásait vagy frissítéseit, használja az operátort
>=
. Feltételes direktívában_MSC_VER
összehasonlíthatja az ismert verzióval. Ha több, egymástól kölcsönösen kizáró verziót szeretne összehasonlítani, a verziószám csökkenő sorrendjében rendezze az összehasonlításokat. Ez a kód például a Visual Studio 2017-ben és újabb verzióiban kiadott fordítókat ellenőrzi. Ezután ellenőrzi a Visual Studio 2015-ben vagy azt követően kiadott fordítókat. Ezután ellenőrzi a Visual Studio 2015 előtt kiadott összes fordítót:#if _MSC_VER >= 1910 // . . . #elif _MSC_VER >= 1900 // . . . #else // . . . #endif
A Visual Studio 2019 16.8 és 16.9, illetve 16.10 és 16.11 verziójával kapcsolatos további információkért, amelyek azonos fő- és alverziókat használnak (és így azonos értékkel
_MSC_VER
rendelkeznek) lásd a Visual Studio 2017-től kezdődő szolgáltatáskiadásokat.A fordító verziószámozásának előzményeiről, a fordító verziószámairól és az általuk megfelelő Visual Studio-verziókról további információt a C++ fordítóverzió-verziószámozás című témakörben talál. A Visual C++ Fordítóverzió a Microsoft C++ csapat blogján is megtalálható.
_MSVC_LANG
Egész számkonstansként definiálva, amely meghatározza a fordító által megcélzott C++ nyelvi szabványt. Csak a C++-ként lefordított kód állítja be. A makró alapértelmezés szerint az egész szám konstansértéke201402L
, vagy ha a/std:c++14
fordító beállítás meg van adva. A makró beállítása akkor történik,201703L
ha a/std:c++17
fordító beállítás meg van adva. A makró beállítása akkor történik,202002L
ha a/std:c++20
fordító beállítás meg van adva. A beállítás megadásakor/std:c++latest
magasabb, meghatározatlan értékre van állítva. Ellenkező esetben a makró nincs definiálva. A_MSVC_LANG
Visual Studio 2015 3. frissítésében elérhető a makró- és/std
a (nyelvi szabványverzió megadása) fordító beállításai.__MSVC_RUNTIME_CHECKS
1-ként van definiálva, ha az/RTC
egyik fordítóbeállítás be van állítva. Ellenkező esetben nincs definiálva._MSVC_TRADITIONAL
:- A Visual Studio 2017 15.8-as verziójától kezdve érhető el: 0-ként definiálva, ha be van állítva az előfeldolgozási konformitási mód
/experimental:preprocessor
fordítóbeállítása. Alapértelmezés szerint 1-ként van definiálva, vagy ha a/experimental:preprocessor-
fordítóbeállítás be van állítva, jelezve, hogy a hagyományos előfeldolgozó használatban van. - A Visual Studio 2019 16.5-ös verziójától kezdve érhető el: 0-ként definiálva, ha be van állítva az előfeldolgozási konformitási mód
/Zc:preprocessor
fordítóbeállítása. Alapértelmezés szerint 1-ként van definiálva, vagy ha a/Zc:preprocessor-
fordító beállítás be van állítva, jelezve, hogy a hagyományos előfeldolgozó használatban van (lényegében/Zc:preprocessor
az elavultat/experimental:preprocessor
helyettesíti).
#if !defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL // Logic using the traditional preprocessor #else // Logic using cross-platform compatible preprocessor #endif
- A Visual Studio 2017 15.8-as verziójától kezdve érhető el: 0-ként definiálva, ha be van állítva az előfeldolgozási konformitási mód
_MT
1-ként van definiálva, ha/MD
vagy/MDd
(többszálú DLL)vagy/MT
/MTd
(többszálas) van megadva. Ellenkező esetben nincs definiálva._NATIVE_WCHAR_T_DEFINED
1-ként van definiálva, ha a/Zc:wchar_t
fordító beállítás be van állítva. Ellenkező esetben nincs definiálva._OPENMP
Ha az/openmp
OpenMP 2.0 támogatás engedélyezése beállítás be van állítva, akkor egész számkonstansként 200203 definiálva. Ez az érték az MSVC által implementált OpenMP-specifikáció dátumát jelöli. Ellenkező esetben nincs definiálva.// _OPENMP_dir.cpp // compile with: /openmp #include <stdio.h> int main() { printf("%d\n", _OPENMP); }
_PREFAST_
1-ként van definiálva, ha a/analyze
fordító beállítás be van állítva. Ellenkező esetben nincs definiálva.__SANITIZE_ADDRESS__
A Visual Studio 2019 16.9-es verziójától kezdve érhető el. 1-ként van definiálva, ha a/fsanitize=address
fordító beállítás be van állítva. Ellenkező esetben nincs definiálva.__TIMESTAMP__
Sztringkonstansként definiálva, amely az aktuális forrásfájl utolsó módosításának dátumát és időpontját tartalmazza a CRTasctime
függvény által visszaadott rövidített, állandó hosszúságú űrlapon,Fri 19 Aug 13:32:58 2016
például. Ez a makró mindig definiálva van._VC_NODEFAULTLIB
1-ként van definiálva, ha az/Zl
(Alapértelmezett kódtárnév kihagyása) fordítóbeállítás be van állítva. Ellenkező esetben nincs definiálva._WCHAR_T_DEFINED
1-ként van definiálva, ha az alapértelmezett/Zc:wchar_t
fordítóbeállítás be van állítva. A_WCHAR_T_DEFINED
makró definiálva van, de nincs értéke, ha a/Zc:wchar_t-
fordító beállítás be van állítva, éswchar_t
a projektben található rendszerfejlécfájlban van definiálva. Ellenkező esetben nincs definiálva._WIN32
1-ként van definiálva, ha a fordítási cél 32 bites ARM, 64 bites ARM, x86 vagy x64. Ellenkező esetben nincs definiálva._WIN64
1-ként van definiálva, ha a fordítási cél 64 bites ARM vagy x64. Ellenkező esetben nincs definiálva._WINRT_DLL
C++ fordításkor 1-ként van definiálva, és mindkettő/ZW
(Windows Futtatókörnyezet fordítása)és/LD
/LDd
a fordító beállításai is meg vannak adva. Ellenkező esetben nincs definiálva.
A fordító nem definiál előre olyan előfeldolgozó makrókat, amelyek azonosítják az ATL- vagy MFC-kódtár verzióját. Az ATL- és MFC-kódtárfejlécek belsőleg határozzák meg ezeket a verziómakrókat. Az előfeldolgozási irányelvek nem definiálják őket, mielőtt a szükséges fejlécet belefoglalják.
_ATL_VER
<atldef.h>
Az ATL-verziószámot kódoló egész számkonstansként definiálva._MFC_VER
<afxver_.h>
Az MFC-verziószámot kódoló egész számkonstansként definiálva.
Lásd még
Makrók (C/C++)
Előfeldolgozó operátorok
Előfeldolgozási irányelvek