Compilatoare Visual C ++ definit terminat unele macro-uri preprocesorul, în funcție de limba (C sau C ++), obiectul țintă și compilează opțiuni pentru compilatorul selectat.
Visual C ++ sprijină macro-urile necesare preprocesorul predefinite definite de / standardul ANSI ISO C99 și ISO C ++ standardul 14. Implementarea sprijină, de asemenea, mai multe Microsoft macro-uri suplimentare sisteme Preprocessor. Unele macro-uri sunt definite doar pentru anumite medii sau de a construi setări compilator. În cazul în care nu este specificat, macrocomenzile de înregistrare definite în conversie ca și în cazul în care acestea au fost indicate ca / D opțiunea compilator argumente. La determinarea macro-uri preprocesorul se desfășoară înainte de compilare aceste valori. Mecanismele predefinite nu acceptă argumente și nu pot fi suprascrise.
Compilatorul acceptă acest identificator predefinit, definit de C99 al standardului ISO și ISO C ++ 11.
__func__ Numele incomplet și nedecorat al funcției include ca funcție de caracterul static local ``.
Compilatorul acceptă următoarele macrocomenzi predefinite definite de standardele ISO C99 și C ++ 14 ISO.
__cplusplus este definit ca valoarea unui integer literal atunci când înregistrarea de conversie este compilată ca C ++. În caz contrar, nu este definită.
__DATE__ Data compilării fișierului sursă curentă. Data este un șir de o constantă de lungime literală în formatul mmm dd yyyy. Numele lunii Mmm coincide cu numele lunii abreviate în datele create de biblioteca runtime a funcției C asc. Data primului caracter dd este spațiul dacă valoarea este mai mică de 10. Această macrocomandă este întotdeauna definită.
__FILE__ este numele fișierului sursă curentă. __FILE__ este extins pentru un caracter literal. Pentru a verifica dacă este afișată calea completă la fișier, utilizați / FC (calea completă pentru fișierul sursă din diagnosticare). Această macrocomandă este întotdeauna definită.
__LINE__ este definit ca numărul întreg al liniei din fișierul sursă curentă. Valoarea macrocomenzii __LINE__ poate fi modificată utilizând directiva #line. Această macrocomandă este întotdeauna definită.
__STDC__ este definit ca 1 numai dacă se compilează ca C și / Za specifică opțiunea de compilator. În caz contrar, nu este definită.
__STDC_HOSTED__ este definită ca 1 dacă implementarea este o implementare găzduită. sprijină toate bibliotecile standard necesare. Altfel, este definit ca 0.
__STDCPP_THREADS__ este definită ca 1 numai dacă programul poate avea mai multe thread-uri de execuție și este compilat ca C ++. În caz contrar, nu este definită.
__TIME__ este timpul de traducere al înregistrării conversiei de preprocesare. Timpul este un șir de caractere literale în hh. la fel ca timpul returnat de biblioteca runtime a funcției C ascite. Această macrocomandă este întotdeauna definită.
_CPPRTTI este definită ca 1 dacă / GR (include informații despre tipurile de runtime) este specificată de opțiunea de compilator. În caz contrar, nu este definită.
_DEBUG este definit ca 1 if / LDd. / MDd. sau / MTd este setat la opțiunea de compilator. În caz contrar, nu este definită.
_DLL este definită ca 1 dacă / MDd sau / MDd este setată la opțiunea compilator (DLL cu mai multe fire). În caz contrar, nu este definită.
__FUNCDNAME__ este definit ca un literal șir care conține numele decorat al funcției externe. Macrocomanda este definită numai în cadrul funcției. __FUNCDNAME__ macroul nu se desfasoara atunci cand se utilizeaza optiunea / EP sau / P compilator.
În acest exemplu, este utilizat __FUNCDNAME__. __FUNCSIG__. și macro-uri __FUNCTION__ pentru a afișa informații despre funcție.
__FUNCSIG__ este definit ca un literal șir care conține semnătura funcției include. Macrocomanda este definită numai în cadrul funcției. __FUNCSIG__ macro nu se desfasoara atunci cand folositi optiunea / EP sau / P compilator. Când compilați pentru un terminal pe 64 de biți, convenția de apel este __cdecl în mod implicit. Pentru un exemplu de utilizare, consultați macrocomanda __FUNCDNAME__.
__FUNCTION__ este definit ca un literal șir care conține numele extern al funcției include. Macrocomanda este definită numai în cadrul funcției. __FUNCTION__ macro nu se desfasoara atunci cand folositi optiunea / EP sau / P compilator. Pentru un exemplu de utilizare, consultați macrocomanda __FUNCDNAME__.
_INTEGRAL_MAX_BITS definită ca valoare în întregime 64, valoarea maximă (în biți) pentru un tip întreg nu este un vector. Această macrocomandă este întotdeauna definită.
__INTELLISENSE__ este definită ca 1 în timpul procesului de compilare IntelliSense în mediul de dezvoltare integrat Visual Studio. În caz contrar, nu este definită. Această macrocomandă poate fi utilizată pentru a proteja codul compilatorului IntelliSense să nu o înțeleagă și să o folosească pentru a comuta între ansamblu și compilatorul IntelliSense. Pentru mai multe informații, consultați Sfaturile de depanare pentru performanța IntelliSense.
_ISO_VOLATILE este definită ca 1 if / volatile: iso este setată la opțiunea de compilator. În caz contrar, nu este definită.
_KERNEL_MODE este definită ca 1 dacă opțiunea / kernel este setată la opțiunea de compilator. În caz contrar, nu este definită.
_M_AMD64 este definit ca un integer literal, procesorul x64 are o valoare de 100 pentru compilare. În caz contrar, nu este definită.
_M_ARM este definită ca o valoare literală integeră de 7 pentru compilațiile destinate procesoarelor ARM. În caz contrar, nu este definită.
_M_ARM_ARMV7VE definit ca 1 în cazul în care / arc: ARMv7VE set de parametri compilator pentru compilare destinate procesoare ARM. În caz contrar, nu este definită.
_M_ARM_FP definit ca valoarea unui număr întreg literal care indică faptul că / opțiunea compilator arc a fost stabilit, în cazul în care ținta pentru procesoarele ARM compilare. În caz contrar, nu este definită.
În intervalul 30-39, dacă a fost specificat / arhivă parametrul ARM, este setată o valoare care indică arhitectura implicită pentru ARM (VFPv3).
În intervalul 40-49, dacă / arch: VFPv4 a fost instalat.
În secțiunea / arc (ARM), pentru mai multe informații.
_M_ARM64 este definită ca 1 pentru compilațiile destinate procesoarelor ARM pe 64 de biți. În caz contrar, nu este definită.
_M_CEE este definit ca 001 Dacă orice / CLR (compilație CLR) este setat la opțiunea de compilator. În caz contrar, nu este definită.
_M_CEE_PURE este definit ca 001 Dacă / CLR: este specificată opțiunea compilatoare. În caz contrar, nu este definită.
_M_CEE_SAFE este definit ca 001 Dacă / CLR: sigur este setat la opțiunea de compilator. În caz contrar, nu este definită.
_M_FP_EXCEPT este definit ca 1 if / fp: cu excepția sau / fp: strict, opțiunea de compilator este specificată. În caz contrar, nu este definită.
_M_FP_FAST este definit ca 1 if / fp: rapid este setat la opțiunea de compilator. În caz contrar, nu este definită.
_M_FP_PRECISE este definit ca 1 if / fp: este specificată opțiunea exactă a compilatorului. În caz contrar, nu este definită.
_M_FP_STRICT este definit ca 1 if / fp: strict este setat la opțiunea de compilator. În caz contrar, nu este definită.
_M_IX86 este definit ca un integer literal, procesorul x86 are o valoare de 600 de compilații. Această macrocomandă nu este definită pentru obiectivele de compilare x64 sau ARM.
_M_IX86_FP este definită ca valoarea unui integer literal care specifică / arca parametrul compilatorului care a fost setat sau valoarea implicită. Această macrocomandă este întotdeauna determinată atunci când obiectul țintă compilează procesorul x86. În caz contrar, nu este definită. Dacă este specificat, valoarea este:
0, dacă / arc: IA32 opțiunea de compilator a fost setat.
1, dacă / arc: SSE, opțiunea de compilator a fost setată.
2 dacă / arc: SSE2. / arc: AVX sau / arc: AVX2, opțiunea de compilator a fost setată. Această valoare este utilizată implicit dacă / arh nu a specificat opțiunea de compilator. Când / arc: este specificat AVX, este definită și macrocomanda __AVX__. Atunci când / arc: AVX2 este specificat, ambele __AVX__ și __AVX2__ sunt, de asemenea, definite.
În secțiunea / arc (x86).
_M_X64 este definit ca un integer literal, procesorul x64 are o valoare de 100 pentru compilare. În caz contrar, nu este definită.
_MANAGED este definit ca 1 dacă / CLR este setat la opțiunea de compilator. În caz contrar, nu este definită.
_MSC_EXTENSIONS este definită ca 1 dacă / Ze (include extensii de limbă) este setată la opțiunea compilator, care este utilizată în mod implicit. În caz contrar, nu este definită.
__MSVC_RUNTIME_CHECKS este definită ca 1 dacă specificați opțiunile compilatorului într-unul din / RTCs. În caz contrar, nu este definită.
_MT este definit ca 1 dacă / MD sau MDd (Multithreaded DLL) sau / MT sau MTd este specificat (multithreaded). În caz contrar, nu este definită.
_NATIVE_WCHAR_T_DEFINED este definită ca 1 if / Zc: opțiunea compilatorului este specificată. În caz contrar, nu este definită.