Předdefinovaná makra
Kompilátor Microsoft C/C++ (MSVC) předdefinuje určitá makra preprocesoru v závislosti na jazyce (C nebo C++), cíli kompilace a zvolených možnostech kompilátoru.
MSVC podporuje předdefinovaná makra preprocesoru vyžadovaná standardy ANSI/ISO C99, C11 a C17 a ISO C++14, C++17 a C++20. Implementace také podporuje několik dalších maker preprocesoru specifických pro Microsoft.
Některá makra jsou definována pouze pro konkrétní prostředí sestavení nebo možnosti kompilátoru. Pokud není uvedeno, makra jsou definována v celé jednotce překladu, jako by byly zadány jako /D
argumenty možností kompilátoru. Při definování preprocesor rozbalí makra před kompilací jejich zadané hodnoty. Předdefinovaná makra nepřebírají žádné argumenty a nelze je znovu definovat.
Standardní předdefinovaný identifikátor
Kompilátor podporuje tento předdefinovaný identifikátor určený ISO C99 a ISO C++11.
__func__
Nekvalifikovaný a neoznamenaný název ohraničující funkce jako pole statických constůchar
funkce místní funkce .void example() { printf("%s\n", __func__); } // prints "example"
Standardní předdefinovaná makra
Kompilátor podporuje tato předdefinovaná makra určená standardy ISO C99, C11, C17 a ISO C++17.
__cplusplus
Definováno jako celočíselná hodnota literálu při kompilaci jednotky překladu jako C++. Jinak není definováno.__DATE__
Datum kompilace aktuálního zdrojového souboru. Datum je řetězcový literál konstantní délky formuláře Mmm dd yyyy. Název měsíce Mmm je stejný jako zkrácený název měsíce vygenerovaný funkcí C Runtime Library (CRT). První znak data dd je mezera, pokud je hodnota menší než 10. Toto makro je vždy definováno.__FILE__
Název aktuálního zdrojového souboru.__FILE__
rozbalí literál řetězce znaků. Pokud chcete zajistit, aby se zobrazila úplná cesta k souboru, použijte/FC
(úplná cesta k souboru zdrojového kódu v diagnostice). Toto makro je vždy definováno.__LINE__
Definuje se jako celé číslo řádku v aktuálním zdrojovém souboru. Hodnotu tohoto makra lze změnit pomocí direktivy#line
. Celočíselný typ hodnoty__LINE__
se může lišit v závislosti na kontextu. Toto makro je vždy definováno.__STDC__
Definováno jako 1 při kompilaci jako C a pokud je zadána možnost kompilátoru/Za
. Počínaje sadou Visual Studio 2022 verze 17.2 se při kompilaci jako C definuje jako 1 a pokud je zadána možnost kompilátoru/std:c11
/std:c17
. Jinak není definováno.__STDC_HOSTED__
Definuje se jako 1, pokud je implementace hostovaná implementace, která podporuje celou požadovanou standardní knihovnu. V opačném případě je definováno jako 0.__STDC_NO_ATOMICS__
Definuje se jako 1, pokud implementace nepodporuje volitelné standardní atomy. Implementace MSVC ji definuje jako 1 při kompilaci jako C a jedna z/std
možností C11 nebo C17 je zadána.__STDC_NO_COMPLEX__
Definuje se jako 1, pokud implementace nepodporuje volitelná standardní komplexní čísla. Implementace MSVC ji definuje jako 1 při kompilaci jako C a jedna z/std
možností C11 nebo C17 je zadána.__STDC_NO_THREADS__
Definuje se jako 1, pokud implementace nepodporuje volitelná standardní vlákna. Implementace MSVC ji definuje jako 1 při kompilaci jako C a jedna z/std
možností C11 nebo C17 je zadána.__STDC_NO_VLA__
Definuje se jako 1, pokud implementace nepodporuje pole standardních proměnných délky. Implementace MSVC ji definuje jako 1 při kompilaci jako C a jedna z/std
možností C11 nebo C17 je zadána.__STDC_VERSION__
Je definována při kompilaci jako C a je zadána jedna z/std
možností C11 nebo C17. Rozbalí201112L
se pro/std:c11
, a201710L
pro/std:c17
.__STDCPP_DEFAULT_NEW_ALIGNMENT__
Pokud/std:c17
je zadáno nebo později, toto makro se rozšíří nasize_t
literál, který má hodnotu zarovnání zaručené voláním zarovnání bez vědomíoperator new
. Větší zarovnání se předávají přetížení s podporou zarovnání, napříkladoperator new(std::size_t, std::align_val_t)
. Další informace najdete v tématu/Zc:alignedNew
(Přidělení zarovnané přes c++17).__STDCPP_THREADS__
Definováno jako 1, pokud a pouze v případě, že program může mít více než jedno vlákno provádění a zkompilováno jako C++. Jinak není definováno.__TIME__
Čas překladu předzpracované jednotky překladu. Čas je řetězcový literál znaku formuláře hh:mm:ss, který je stejný jako čas vrácený funkcí CRT asctime . Toto makro je vždy definováno.
Předdefinovaná makra specifická pro Microsoft
MSVC podporuje další předdefinovaná makra:
__ARM_ARCH
Definuje se jako celočíselná literála, která představuje verzi architektury ARM. Hodnota je definována jako 8 pro architekturu Armv8-A. U verze 8.1 a novější se hodnota škáluje pro podverze, jako je X.Y, pomocí vzorce X * 100 + Y definovaného rozšířením jazyka ARM C. Například pro Armv8.1__ARM_ARCH
je 8 * 100 + 1 nebo 801. Informace o nastavení verze architektury ARM najdete v tématu/arch (ARM64)
. Toto makro bylo zavedeno v sadě Visual Studio 2022 verze 17.10.__ATOM__
Definováno jako 1, pokud/favor:ATOM
je nastavena možnost kompilátoru a cíl kompilátoru je x86 nebo x64. Jinak není definováno.__AVX__
Definováno jako 1 při/arch:AVX
/arch:AVX2
/arch:AVX512
nastavení , nebo/arch:AVX10.1
možnosti kompilátoru a cíl kompilátoru je x86 nebo x64. Jinak není definováno.__AVX2__
Definováno jako 1, pokud/arch:AVX2
je nastavena možnost nebo/arch:AVX512
/arch:AVX10.1
kompilátor a cíl kompilátoru je x86 nebo x64. Jinak není definováno.__AVX512BW__
Definováno jako 1, pokud/arch:AVX512
je nastavena možnost nebo/arch:AVX10.1
kompilátor a cíl kompilátoru je x86 nebo x64. Jinak není definováno.__AVX512CD__
Definováno jako 1, pokud/arch:AVX512
je nastavena možnost nebo/arch:AVX10.1
kompilátor a cíl kompilátoru je x86 nebo x64. Jinak není definováno.__AVX512DQ__
Definováno jako 1, pokud/arch:AVX512
je nastavena možnost nebo/arch:AVX10.1
kompilátor a cíl kompilátoru je x86 nebo x64. Jinak není definováno.__AVX512F__
Definováno jako 1, pokud/arch:AVX512
je nastavena možnost nebo/arch:AVX10.1
kompilátor a cíl kompilátoru je x86 nebo x64. Jinak není definováno.__AVX512VL__
Definováno jako 1, pokud/arch:AVX512
je nastavena možnost nebo/arch:AVX10.1
kompilátor a cíl kompilátoru je x86 nebo x64. Jinak není definováno.__AVX10_VER__
Definováno jako celé číslo, které představuje verzi AVX10 při/arch:AVX10.1
nastavení možnosti kompilátoru a cíl kompilátoru je x86 nebo x64. Jinak není definováno._CHAR_UNSIGNED
Je definován jako 1, pokud je výchozíchar
typ bez znaménka. Tato hodnota je definována, když je nastavena možnost kompilátoru/J
(výchozí typ znaku je bez znaménka). Jinak není definováno.__CLR_VER
Definováno jako celočíselné literál, který představuje verzi modulu CLR (Common Language Runtime), která se používá ke kompilaci aplikace. Hodnota je kódována ve formulářiMmmbbbbb
, kdeM
je hlavní verzí modulu runtime,mm
je podverze modulu runtime abbbbb
je číslo buildu.__CLR_VER
je definována, pokud je nastavena možnost kompilátoru/clr
. Jinak není definováno.// clr_ver.cpp // compile with: /clr using namespace System; int main() { Console::WriteLine(__CLR_VER); }
_CONTROL_FLOW_GUARD
Definuje se jako 1, když je nastavena možnost kompilátoru/guard:cf
(Povolit ochranu toku řízení ). Jinak není definováno.__COUNTER__
Rozbalí se na celočíselnou literál, který začíná na 0. Hodnota se zvýší o 1 při každém použití ve zdrojovém souboru nebo v zahrnutých hlavičkách zdrojového souboru.__COUNTER__
při použití předkompilovaných hlaviček si pamatuje jeho stav. Toto makro je vždy definováno.Tento příklad používá
__COUNTER__
k přiřazení jedinečných identifikátorů třem různým objektům stejného typu. KonstruktorexampleClass
přebírá celé číslo jako parametr. Vmain
aplikaci deklaruje tři objekty typuexampleClass
pomocí__COUNTER__
jako parametr jedinečného identifikátoru:// 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
Je definována jako celočíselná hodnota literálu 200406 při kompilaci jako C++ a je nastavena možnost kompilátoru/clr
. Jinak není definováno. Pokud je definováno,__cplusplus_cli
platí v celé jednotce překladu.// 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
Je definována jako celočíselná hodnota literálu 201009 při kompilaci jako C++ a je nastavena možnost kompilátoru/ZW
(prostředí Windows Runtime Kompilace). Jinak není definováno._CPPRTTI
Je definován jako 1, pokud je nastavena možnost kompilátoru/GR
(Povolit informace o typu za běhu). Jinak není definováno._CPPUNWIND
Je definováno jako 1, pokud jsou nastaveny některé možnosti kompilátoru kompilátoru/GX
(Povolit zpracování výjimek),/clr
(kompilace modulu Common Language Runtime) nebo/EH
(Model zpracování výjimek). Jinak není definováno._DEBUG
Definováno jako 1, pokud je nastavena/LDd
možnost ,/MDd
nebo/MTd
kompilátoru. Jinak není definováno._DLL
Definováno jako 1, pokud je nastavena možnost kompilátoru/MD
nebo/MDd
(Multithreaded DLL). Jinak není definováno.__FUNCDNAME__
Definuje se jako řetězcový literál, který obsahuje zdobený název ohraničující funkce. Makro je definováno pouze v rámci funkce. Makro__FUNCDNAME__
není rozbalené, pokud použijete možnost nebo/P
možnost kompilátoru/EP
.V tomto příkladu
__FUNCDNAME__
se k zobrazení informací o funkcích používají makra a__FUNCSIG__
__FUNCTION__
.// 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__
Definuje se jako řetězcový literál, který obsahuje podpis ohraničující funkce. Makro je definováno pouze v rámci funkce. Makro__FUNCSIG__
není rozbalené, pokud použijete možnost nebo/P
možnost kompilátoru/EP
. Při kompilaci pro 64bitový cíl je__cdecl
ve výchozím nastavení konvence volání. Příklad použití najdete v makrech__FUNCDNAME__
.__FUNCTION__
Definováno jako řetězcový literál, který obsahuje nezakódovaný název ohraničující funkce. Makro je definováno pouze v rámci funkce. Makro__FUNCTION__
není rozbalené, pokud použijete možnost nebo/P
možnost kompilátoru/EP
. Příklad použití najdete v makrech__FUNCDNAME__
._INTEGRAL_MAX_BITS
Definuje se jako celočíselná hodnota literálu 64, maximální velikost (v bitech) celočíselného typu. Toto makro je vždy definováno.// integral_max_bits.cpp #include <stdio.h> int main() { printf("%d\n", _INTEGRAL_MAX_BITS); }
__INTELLISENSE__
Definice jako 1 během kompilátoru IntelliSense předá integrované vývojové prostředí sady Visual Studio. Jinak není definováno. Pomocí tohoto makra můžete chránit kód, kterému kompilátor IntelliSense nerozumí, nebo ho můžete použít k přepínání mezi kompilátorem sestavení a IntelliSense. Další informace najdete v tématu Tipy pro řešení potíží s pomalostí technologie IntelliSense._ISO_VOLATILE
Je definován jako 1, pokud je nastavena možnost kompilátoru/volatile:iso
. Jinak není definováno._KERNEL_MODE
Definuje se jako 1, pokud je nastavena možnost kompilátoru/kernel
(Create Kernel Mode Binary). Jinak není definováno._M_AMD64
Definováno jako celočíselná hodnota literálu 100 pro kompilace, které cílí na procesory x64 nebo ARM64EC. Jinak není definováno._M_ARM
Definuje se jako celočíselná hodnota literálu 7 pro kompilace, které cílí na procesory ARM. Nedefinováno pro ARM64, ARM64EC a další cíle._M_ARM_ARMV7VE
Definováno jako 1, pokud je možnost kompilátoru/arch:ARMv7VE
nastavena pro kompilace, které cílí na procesory ARM. Jinak není definováno._M_ARM_FP
Definováno jako celočíselná hodnota literálu označující, která/arch
možnost kompilátoru byla nastavena pro cíle procesoru ARM. Jinak není definováno.Hodnota v rozsahu 30–39, pokud nebyla zadána žádná
/arch
možnost ARM, která indikuje, že byla nastavena výchozí architektura ARM (VFPv3
).Hodnota v rozsahu 40–49, pokud
/arch:VFPv4
byla nastavena.Další informace najdete v tématu
/arch
(ARM).
_M_ARM64
Definováno jako 1 pro kompilace, které cílí na ARM64. Jinak není definováno._M_ARM64EC
Definováno jako 1 pro kompilace, které cílí na ARM64EC. Jinak není definováno._M_CEE
Definováno jako 001, pokud je nastavena nějaká/clr
možnost kompilátoru (Common Language Runtime Compilation). Jinak není definováno._M_CEE_PURE
Zastaralé od sady Visual Studio 2015. Definováno jako 001, pokud je nastavena možnost kompilátoru/clr:pure
. Jinak není definováno._M_CEE_SAFE
Zastaralé od sady Visual Studio 2015. Definováno jako 001, pokud je nastavena možnost kompilátoru/clr:safe
. Jinak není definováno._M_FP_CONTRACT
K dispozici od sady Visual Studio 2022. Definuje se jako 1, pokud je nastavena možnost kompilátoru/fp:contract
/fp:fast
. Jinak není definováno._M_FP_EXCEPT
Definuje se jako 1, pokud je nastavena možnost kompilátoru/fp:except
/fp:strict
. Jinak není definováno._M_FP_FAST
Je definován jako 1, pokud je nastavena možnost kompilátoru/fp:fast
. Jinak není definováno._M_FP_PRECISE
Je definován jako 1, pokud je nastavena možnost kompilátoru/fp:precise
. Jinak není definováno._M_FP_STRICT
Je definován jako 1, pokud je nastavena možnost kompilátoru/fp:strict
. Jinak není definováno._M_IX86
Definováno jako celočíselná hodnota literálu 600 pro kompilace, které cílí na procesory x86. Toto makro není definováno pro cíle kompilace x64 nebo ARM._M_IX86_FP
Definováno jako celočíselná hodnota literálu označující nastavenou/arch
možnost kompilátoru nebo výchozí hodnotu. Toto makro je vždy definováno, pokud je cílem kompilace procesor x86. Jinak není definováno. Při definování je tato hodnota:0, pokud byla nastavena možnost kompilátoru
/arch:IA32
.1, pokud byla nastavena možnost kompilátoru
/arch:SSE
.2, pokud byla nastavena
/arch:SSE2
možnost ,/arch:AVX
,/arch:AVX2
/arch:AVX512
nebo/arch:AVX10.1
kompilátor. Tato hodnota je výchozí, pokud nebyla zadána možnost kompilátoru/arch
. Po/arch:AVX
zadání je také definováno makro__AVX__
. Při/arch:AVX2
zadání jsou definovány obě__AVX__
a__AVX2__
jsou také definovány. Je-li/arch:AVX512
zadán, , ,__AVX512BW__
__AVX512CD__
__AVX2__
__AVX512DQ__
__AVX__
__AVX512F__
, a__AVX512VL__
jsou také definovány. Je-li/arch:AVX10.1
zadán, , ,__AVX512BW__
__AVX512DQ__
__AVX__
__AVX512CD__
__AVX512F__
__AVX2__
,__AVX512VL__
a__AVX10_VER__
jsou také definovány.Další informace najdete v tématu
/arch
(x86).>
_M_X64
Definováno jako celočíselná hodnota literálu 100 pro kompilace, které cílí na procesory x64 nebo ARM64EC. Jinak není definováno._MANAGED
Definováno jako 1, když je nastavena možnost kompilátoru/clr
. Jinak není definováno._MSC_BUILD
Definováno jako celočíselná literála, která obsahuje prvek číslo revize čísla verze kompilátoru. Číslo revize je posledním prvkem čísla verze s oddělovači tečkami. Pokud je například číslo verze kompilátoru Microsoft C/C++ 15.00.20706.01,_MSC_BUILD
makro je 1. Toto makro je vždy definováno._MSC_EXTENSIONS
Je definován jako 1, pokud je nastavena možnost kompilátoru on-in-by-default/Ze
(Enable Language Extensions). Jinak není definováno._MSC_FULL_VER
Definuje se jako celočíselná literála, která kóduje hlavní, podverze a číselné prvky čísla sestavení čísla verze kompilátoru. Hlavní číslo je prvním prvkem čísla verze odděleného tečkou, podverze je druhý prvek a číslo buildu je třetí prvek.Pokud je například verze kompilátoru Microsoft C/C++ 19.39.33519,
_MSC_FULL_VER
je 193933519. Zadánímcl /?
na příkazovém řádku zobrazíte číslo verze kompilátoru. Toto makro je vždy definováno. Další informace o správě verzí kompilátoru najdete v článku o správě verzí kompilátoru C++ a konkrétně verzích služby počínaje sadou Visual Studio 2017 , kde najdete další informace o sadě Visual Studio 2019 16.8, 16.9, 16.10 a 16.11, které vyžadují_MSC_FULL_VER
jejich oddělování._MSC_VER
Definováno jako celočíselné literál, který kóduje hlavní a vedlejší číselné elementy čísla verze kompilátoru. Hlavní číslo je prvním prvkem čísla verze odděleného tečkou a podverze je druhý prvek. Pokud je například číslo verze kompilátoru Microsoft C/C++ 17.00.51106.1, hodnota_MSC_VER
je 1700. Zadánímcl /?
na příkazovém řádku zobrazíte číslo verze kompilátoru. Toto makro je vždy definováno.K otestování verzí nebo aktualizací kompilátoru v dané verzi sady Visual Studio nebo novější použijte
>=
operátor. Můžete ji použít v podmíněné direktivě k porovnání_MSC_VER
s danou známou verzí. Pokud máte k porovnání několik vzájemně se vylučujících verzí, sestavte porovnání v sestupném pořadí čísla verze. Tento kód například kontroluje kompilátory vydané v sadě Visual Studio 2017 a novějších. Dále zkontroluje kompilátory vydané v sadě Visual Studio 2015 nebo po něm. Pak zkontroluje všechny kompilátory vydané před sadou Visual Studio 2015:#if _MSC_VER >= 1910 // . . . #elif _MSC_VER >= 1900 // . . . #else // . . . #endif
Další informace o sadě Visual Studio 2019 16.8 a 16.9 a 16.10 a 16.11, které sdílejí stejné hlavní a podverze (a proto mají stejnou hodnotu pro
_MSC_VER
), najdete v tématech Vydání služeb počínaje sadou Visual Studio 2017.Další informace o historii správy verzí kompilátoru a čísla verzí kompilátoru a verzí sady Visual Studio, které odpovídají, naleznete v tématu Správa verzí kompilátoru jazyka C++. Také verze kompilátoru Visual C++ na blogu týmu Microsoft C++.
_MSVC_LANG
Definováno jako celočíselné literál, který určuje jazykový standard jazyka C++, na který cílí kompilátor. Pouze kód zkompilovaný jako C++ ho nastaví. Makro je ve výchozím nastavení celočíselná hodnota201402L
literálu nebo pokud je zadána možnost kompilátoru/std:c++14
. Makro je nastaveno,201703L
pokud je zadána možnost kompilátoru/std:c++17
. Makro je nastaveno,202002L
pokud je zadána možnost kompilátoru/std:c++20
. Pokud je tato možnost zadána, je nastavená na vyšší, nezadanou hodnotu/std:c++latest
. Jinak makro není definováno. Možnosti kompilátoru_MSVC_LANG
makra a/std
(Určení standardní verze jazyka) jsou k dispozici od sady Visual Studio 2015 Update 3.__MSVC_RUNTIME_CHECKS
Definováno jako 1, pokud je nastavena jedna z možností kompilátoru/RTC
. Jinak není definováno._MSVC_TRADITIONAL
:- Dostupné od sady Visual Studio 2017 verze 15.8: Je definováno jako 0, pokud je nastavena možnost kompilátoru režimu
/experimental:preprocessor
shody preprocesoru. Ve výchozím nastavení je definováno jako 1 nebo pokud/experimental:preprocessor-
je nastavena možnost kompilátoru, která označuje, že se používá tradiční preprocesor. - K dispozici od sady Visual Studio 2019 verze 16.5: Je definováno jako 0, když je nastavena možnost kompilátoru režimu
/Zc:preprocessor
shody preprocesoru. Ve výchozím nastavení je definováno jako 1 nebo pokud/Zc:preprocessor-
je nastavena možnost kompilátoru, která označuje,/Zc:preprocessor
že se používá tradiční preprocesor (v podstatě nahrazuje zastaralé/experimental:preprocessor
).
#if !defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL // Logic using the traditional preprocessor #else // Logic using cross-platform compatible preprocessor #endif
- Dostupné od sady Visual Studio 2017 verze 15.8: Je definováno jako 0, pokud je nastavena možnost kompilátoru režimu
_MT
Definováno jako 1 při/MD
nebo/MDd
(Multithreaded DLL) nebo/MT
/MTd
(Multithreaded) je zadáno. Jinak není definováno._NATIVE_WCHAR_T_DEFINED
Definováno jako 1, když je nastavena možnost kompilátoru/Zc:wchar_t
. Jinak není definováno._OPENMP
Je-li nastavena možnost kompilátoru (Povolit podporu OpenMP 2.0) jako celočíselná literálová 200203, je-li nastavena možnost kompilátoru/openmp
(Povolit podporu OpenMP 2.0). Tato hodnota představuje datum specifikace OpenMP implementované msVC. Jinak není definováno.// _OPENMP_dir.cpp // compile with: /openmp #include <stdio.h> int main() { printf("%d\n", _OPENMP); }
_PREFAST_
Definováno jako 1, když je nastavena možnost kompilátoru/analyze
. Jinak není definováno.__SANITIZE_ADDRESS__
K dispozici od sady Visual Studio 2019 verze 16.9. Definováno jako 1, když je nastavena možnost kompilátoru/fsanitize=address
. Jinak není definováno.__TIMESTAMP__
Definováno jako řetězcový literál obsahující datum a čas poslední změny aktuálního zdrojového souboru ve zkrácené formě konstantní délky vrácené funkcí CRTasctime
,Fri 19 Aug 13:32:58 2016
například . Toto makro je vždy definováno._VC_NODEFAULTLIB
Je definován jako 1, pokud je nastavena možnost kompilátoru/Zl
(vynechat výchozí název knihovny). Jinak není definováno._WCHAR_T_DEFINED
Pokud je nastavena výchozí/Zc:wchar_t
možnost kompilátoru, je definována jako 1. Makro_WCHAR_T_DEFINED
je definováno, ale nemá žádnou hodnotu, pokud/Zc:wchar_t-
je nastavena možnost kompilátoru awchar_t
je definována v systémovém hlavičce souboru zahrnutého v projektu. Jinak není definováno._WIN32
Definovaný jako 1, pokud je cíl kompilace 32bitový ARM, 64bitový ARM, x86 nebo x64. Jinak není definováno._WIN64
Definovaný jako 1, pokud je cíl kompilace 64bitový ARM nebo x64. Jinak není definováno._WINRT_DLL
Při kompilaci jazyka C++ a/ZW
nastavení možností kompilátoru (prostředí Windows Runtime kompilace) a/LD
kompilátoru/LDd
jako 1. Jinak není definováno.
Kompilátor nedefinuje žádná makra preprocesoru, která identifikují verzi knihovny ATL nebo MFC. Hlavičky knihovny ATL a MFC definují tato makra verzí interně. Nejsou definovány v direktivách preprocesoru provedené před zahrnutím požadované hlavičky.
_ATL_VER
Definováno<atldef.h>
jako celočíselné literál, který kóduje číslo verze ATL._MFC_VER
Definováno<afxver_.h>
jako celočíselné literál, který kóduje číslo verze MFC.