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.
__cplusplusA 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/FCa (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#lineirá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/Zafordí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/stdC11 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/stdC11 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/stdC11 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/stdC11 vagy C17 egyik lehetőség.__STDC_VERSION__A C-ként való fordításkor és a/stdC11 vagy C17 beállítások egyikének megadása meg van adva. Kiterjeszti a201112Lkövetkezőre/std:c11:201710Lés a/std:c17.__STDCPP_DEFAULT_NEW_ALIGNMENT__Ha/std:c17meg van adva vagy újabb, ez a makró egysize_tliterálra bővül, amely az igazítást nem tudóoperator newhí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_ARCHAz 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_ARCHeseté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:ATOMfordí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, ,/arch:AVX512,/arch:AVX10.1vagy/arch:AVX10.2a fordító beállításai meg vannak adva, és a fordító célértéke x86 vagy x64. Ellenkező esetben nincs definiálva.__AVX2__1-ként van definiálva, ha a/arch:AVX2,/arch:AVX512, ,/arch:AVX10.1vagy/arch:AVX10.2fordí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.__AVX512BW__1-ként van definiálva, ha a/arch:AVX512, ,/arch:AVX10.1vagy/arch:AVX10.2fordí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/arch:AVX512, ,/arch:AVX10.1vagy/arch:AVX10.2fordí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/arch:AVX512, ,/arch:AVX10.1vagy/arch:AVX10.2fordí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/arch:AVX512, ,/arch:AVX10.1vagy/arch:AVX10.2fordí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/arch:AVX512, ,/arch:AVX10.1vagy/arch:AVX10.2fordí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, ha a vagy/arch:AVX10.2a/arch:AVX10.1fordí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_UNSIGNED1-ként van definiálva, ha az alapértelmezettchartí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_VEREgé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ábanMmmbbbbbvan kódolva,Ma futtatókörnyezet alverziója, ésmma buildszám.bbbbb__CLR_VERakkor van definiálva, ha a/clrfordí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_GUARD1-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. AexampleClasskonstruktor paraméterként egy egész számot vesz fel. Ebbenmainaz alkalmazásban az alkalmazás három típusúexampleClassobjektumot 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_cliA 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/clrfordítóbeállítás. Ellenkező esetben nincs definiálva. A definiált szöveg__cplusplus_clia 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_winrtA 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._CPPRTTI1-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._CPPUNWIND1-ként van definiálva, ha egy/GXvagy 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._DEBUG1-ként van definiálva, ha a/LDd,/MDdvagy/MTda fordító beállítás be van állítva. Ellenkező esetben nincs definiálva._DLL1-ként van definiálva, ha a/MDvagy/MDda (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/EPa/Pfordí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/EPa/Pfordí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/EPa/Pfordítót használja. A használat példáiért tekintse meg a makrót__FUNCDNAME__._INTEGRAL_MAX_BITSA 64-es egész számkonstansértékként definiálva a maximális méretet (bitekben) egy nem virtuális integráltípushoz. 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_VOLATILE1-ként van definiálva, ha a/volatile:isofordító beállítás be van állítva. Ellenkező esetben nincs definiálva._KERNEL_MODE1-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_AMD64Az 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_ARMAz 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_ARMV7VE1-ként van definiálva, ha a/arch:ARMv7VEfordító beállítása ARM-processzorokat célzó fordításokhoz van beállítva. Ellenkező esetben nincs definiálva._M_ARM_FPEgész szám konstansértékként definiálva, amely azt jelzi, hogy melyik/archfordí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
/archadott 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_ARM64Az ARM64-et célzó fordításokhoz 1-ként van definiálva. Ellenkező esetben nincs definiálva._M_ARM64ECAz ARM64EC megcélzott fordításokhoz 1-ként van definiálva. Ellenkező esetben nincs definiálva._M_CEE001-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_PUREElavult a Visual Studio 2015-ben. 001-ként van definiálva, ha a/clr:purefordító beállítás be van állítva. Ellenkező esetben nincs definiálva._M_CEE_SAFEElavult a Visual Studio 2015-ben. 001-ként van definiálva, ha a/clr:safefordító beállítás be van állítva. Ellenkező esetben nincs definiálva._M_FP_CONTRACTA Visual Studio 2022-től kezdve érhető el. 1-ként van definiálva, ha a fordító vagy/fp:contracta/fp:fastfordító beállítás be van állítva. Ellenkező esetben nincs definiálva._M_FP_EXCEPT1-ként van definiálva, ha a fordító vagy/fp:excepta/fp:strictfordító beállítás be van állítva. Ellenkező esetben nincs definiálva._M_FP_FAST1-ként van definiálva, ha a/fp:fastfordító beállítás be van állítva. Ellenkező esetben nincs definiálva._M_FP_PRECISE1-ként van definiálva, ha a/fp:precisefordító beállítás be van állítva. Ellenkező esetben nincs definiálva._M_FP_STRICT1-ként van definiálva, ha a/fp:strictfordító beállítás be van állítva. Ellenkező esetben nincs definiálva._M_IX86Az 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_FPOlyan egész számkonstansértékként definiálva, amely a/archbeá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:IA32fordító beállítás be van állítva.1, ha a
/arch:SSEfordító beállítás be van állítva.2, ha a
/arch:SSE2,/arch:AVX,/arch:AVX2,/arch:AVX512,/arch:AVX10.1vagy/arch:AVX10.2fordító beállítás be van állítva. Ez az érték az alapértelmezett érték, ha nincs/archmegadva fordítóbeállítás. Ha/arch:AVXmeg van adva, a makró__AVX__is definiálva van. Ha/arch:AVX2meg van adva, mindkettő__AVX__és__AVX2__definiálva is van. Ha/arch:AVX512meg van adva,__AVX__,__AVX2__,__AVX512BW____AVX512CD__, ,__AVX512DQ__, , és__AVX512F____AVX512VL__definiálva is van. Amikor/arch:AVX10.1vagy/arch:AVX10.2meg van adva,__AVX__,__AVX2__,__AVX512BW__,__AVX512CD__,__AVX512DQ__,__AVX512F__és__AVX10_VER____AVX512VL__szintén definiálva van.További információ:
/arch(x86).
_M_X64Az 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._MANAGED1-ként van definiálva, ha a/clrfordító beállítás be van állítva. Ellenkező esetben nincs definiálva._MSC_BUILDEgé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_BUILDmakró 1. Ez a makró mindig definiálva van._MSC_EXTENSIONS1-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_VEREgé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_VERakkor 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_VEREgé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_VER1700. Í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 // . . . #endifA 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_VERrendelkeznek) 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_LANGEgé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++14fordító beállítás meg van adva. A makró beállítása akkor történik,201703Lha a/std:c++17fordító beállítás meg van adva. A makró beállítása akkor történik,202002Lha a/std:c++20fordító beállítás meg van adva. A beállítás megadásakor/std:c++latestmagasabb, meghatározatlan értékre van állítva. Ellenkező esetben a makró nincs definiálva. A_MSVC_LANGVisual Studio 2015 3. frissítésében elérhető a makró- és/stda (nyelvi szabványverzió megadása) fordító beállításai.__MSVC_RUNTIME_CHECKS1-ként van definiálva, ha az/RTCegyik 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:preprocessorfordí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:preprocessorfordí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:preprocessoraz elavultat/experimental:preprocessorhelyettesí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
_MT1-ként van definiálva, ha/MDvagy/MDd(többszálú DLL)vagy/MT/MTd(többszálas) van megadva. Ellenkező esetben nincs definiálva._NATIVE_WCHAR_T_DEFINED1-ként van definiálva, ha a/Zc:wchar_tfordító beállítás be van állítva. Ellenkező esetben nincs definiálva._OPENMPHa az/openmpOpenMP 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/analyzefordí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=addressfordí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 CRTasctimefüggvény által visszaadott rövidített, állandó hosszúságú űrlapon,Fri 19 Aug 13:32:58 2016például. Ez a makró mindig definiálva van._VC_NODEFAULTLIB1-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_DEFINED1-ként van definiálva, ha az alapértelmezett/Zc:wchar_tfordítóbeállítás be van állítva. A_WCHAR_T_DEFINEDmakró definiálva van, de nincs értéke, ha a/Zc:wchar_t-fordító beállítás be van állítva, éswchar_ta projektben található rendszerfejlécfájlban van definiálva. Ellenkező esetben nincs definiálva._WIN321-ként van definiálva, ha a fordítási cél 32 bites ARM, 64 bites ARM, x86, x64 vagy ARM64EC. Ellenkező esetben nincs definiálva._WIN641-ként van definiálva, ha a fordítási cél 64 bites ARM, x64 vagy ARM64EC. Ellenkező esetben nincs definiálva._WINRT_DLLC++ fordításkor 1-ként van definiálva, és mindkettő/ZW(Windows Futtatókörnyezet fordítása)és/LD/LDda 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