Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Microsoft C/C++ derleyicisi (MSVC), dile (C veya C++), derleme hedeflerine ve seçilen derleyici seçeneklerine bağlı olarak belirli ön işlemci makrolarını önceden tanımlar.
MSVC, ANSI/ISO C99, C11 ve C17 standartları ve ISO C++14, C++17 ve C++20 standartları için gereken önceden tanımlanmış ön işlemci makrolarını destekler. Uygulama, Microsoft'a özgü birkaç önişlemci makroyu da destekler.
Bazı makrolar yalnızca belirli derleme ortamları veya derleyici seçenekleri için tanımlanır. Not edilen durumlar dışında, makrolar çeviri biriminin tamamında derleyici seçeneği bağımsız değişkenleri olarak belirtilmiş gibi /D tanımlanır. Tanımlandığında, önişlemci makroları derlemeden önce belirtilen değerlerini genişletir. Önceden tanımlanmış makrolar bağımsız değişken almaz ve yeniden tanımlanamaz.
Standart önceden tanımlanmış tanımlayıcı
Derleyici, ISO C99 ve ISO C++11 tarafından belirtilen önceden tanımlanmış bu tanımlayıcıyı destekler.
__func__kapsayan işlevin nitelenmemiş ve süslenmemiş adı, işlevin yerel statik sabit dizisidirchar.void example() { printf("%s\n", __func__); } // prints "example"
Standart önceden tanımlanmış makrolar
Derleyici, ISO C99, C11, C17 ve ISO C++17 standartları tarafından belirtilen önceden tanımlanmış bu makroları destekler.
__cplusplusÇeviri birimi C++ olarak derlendiğinde tamsayı değişmez değeri olarak tanımlanır. Aksi takdirde tanımsız.__DATE__Geçerli kaynak dosyanın derleme tarihi. Tarih, Mmm dd yy formunun sabit uzunluklu dize değişmez değeridir. Aaa ay adı, C Çalışma Zamanı Kitaplığı (CRT) asctime işlevi tarafından oluşturulan kısaltılmış ay adıyla aynıdır. Değer 10'dan küçükse, tarih dd'nin ilk karakteri bir boşluk olur. Bu makro her zaman tanımlanır.__FILE__Geçerli kaynak dosyanın adı.__FILE__bir karakter dizesi değişmez değerine genişletir. Dosyanın tam yolunun görüntülendiğinden emin olmak için (Tanılamada Kaynak Kod Dosyasının Tam Yolu)/FC. Bu makro her zaman tanımlanır.__LINE__Geçerli kaynak dosyada tamsayı satır numarası olarak tanımlanır. Bu makronun değeri bir#lineyönerge kullanılarak değiştirilebilir. değerinin__LINE__tamser türü bağlama bağlı olarak değişebilir. Bu makro her zaman tanımlanır.__STDC__C olarak derlendiğinde ve derleyici seçeneği belirtilmişse/Za1 olarak tanımlanır. Visual Studio 2022 sürüm 17.2'den başlayarak, C olarak derlendiğinde ve derleyici seçeneği belirtilmişse/Zc:__STDC__1 olarak tanımlanır. Aksi takdirde tanımsız.__STDC_HOSTED__Uygulama, tüm gerekli standart kitaplığı destekleyen barındırılan bir uygulamaysa 1 olarak tanımlanır. Aksi takdirde, 0 olarak tanımlanır.__STDC_NO_ATOMICS__Uygulama isteğe bağlı standart atomikleri desteklemiyorsa 1 olarak tanımlanır. MSVC uygulaması C olarak derlendiğinde bunu 1 olarak tanımlar ve C11 veya C17 seçeneklerinden/stdbiri belirtilir.__STDC_NO_COMPLEX__Uygulama isteğe bağlı standart karmaşık sayıları desteklemiyorsa 1 olarak tanımlanır. MSVC uygulaması C olarak derlendiğinde bunu 1 olarak tanımlar ve C11 veya C17 seçeneklerinden/stdbiri belirtilir.__STDC_NO_THREADS__Uygulama isteğe bağlı standart iş parçacıklarını desteklemiyorsa 1 olarak tanımlanır. MSVC uygulaması C olarak derlendiğinde bunu 1 olarak tanımlar ve C11 veya C17 seçeneklerinden/stdbiri belirtilir.__STDC_NO_VLA__Uygulama standart değişken uzunluğu dizilerini desteklemiyorsa 1 olarak tanımlanır. MSVC uygulaması C olarak derlendiğinde bunu 1 olarak tanımlar ve C11 veya C17 seçeneklerinden/stdbiri belirtilir.__STDC_VERSION__C olarak derlendiğinde tanımlanır ve C11 veya C17 seçeneklerinden biri/stdbelirtilir. için ve201112L/std:c11için201710Lolarak genişletir/std:c17.__STDCPP_DEFAULT_NEW_ALIGNMENT__/std:c17Veya daha sonra belirtildiğinde, bu makro hizalamadan habersizsize_tçağrısıyla garanti edilen hizalama değerine sahip bir değişmez değere genişletiliroperator new. Daha büyük hizalamalar, gibioperator new(std::size_t, std::align_val_t)hizalamaya duyarlı bir aşırı yüklemeye geçirilir. Daha fazla bilgi için bkz/Zc:alignedNew. (C++17 fazla hizalanmış ayırma).__STDCPP_THREADS__Bir programın birden fazla yürütme iş parçacığına sahip olması ve C++ olarak derlenmiş olması durumunda ve yalnızca 1 olarak tanımlanır. Aksi takdirde tanımsız.__TIME__Önceden işlenmiş çeviri biriminin çeviri zamanı. Saat, CRT asctime işlevi tarafından döndürülen saatle aynı olan hh:mm:ss formunun karakter dizesi değişmez değeridir. Bu makro her zaman tanımlanır.
Microsoft'a özgü önceden tanımlanmış makrolar
MSVC önceden tanımlanmış diğer makroları destekler:
__ARM_ARCHARM mimarisi sürümünü temsil eden bir tamsayı değişmez değeri olarak tanımlanır. Değer Armv8-A mimarisi için 8 olarak tanımlanır. 8.1 ve sonraki sürümler için değer, ARM C dil uzantısı tarafından tanımlanan X * 100 + Y formülü kullanılarak X.Y gibi ikincil sürümler için ölçeklendirilir. Örneğin, Armv8.1__ARM_ARCHiçin 8 * 100 + 1 veya 801'dir. ARM mimarisi sürümünü ayarlamak için bkz/arch (ARM64). . Bu makro Visual Studio 2022 sürüm 17.10'da kullanıma sunulmuştur.__ATOM__Derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda/favor:ATOM1 olarak tanımlanır. Aksi takdirde tanımsız.__AVX__, ,/arch:AVX2, ,/arch:AVX512/arch:AVX10.1veya derleyici seçenekleri ayarlandığında ve derleyici hedefi x86 veya/arch:AVX10.2x64 olduğunda/arch:AVX1 olarak tanımlanır. Aksi takdirde tanımsız.__AVX2__, ,/arch:AVX512,/arch:AVX10.1veya derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya/arch:AVX10.2x64 olduğunda/arch:AVX21 olarak tanımlanır. Aksi takdirde tanımsız.__AVX512BW__, veya/arch:AVX10.1derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya/arch:AVX10.2x64 olduğunda/arch:AVX5121 olarak tanımlanır. Aksi takdirde tanımsız.__AVX512CD__, veya/arch:AVX10.1derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya/arch:AVX10.2x64 olduğunda/arch:AVX5121 olarak tanımlanır. Aksi takdirde tanımsız.__AVX512DQ__, veya/arch:AVX10.1derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya/arch:AVX10.2x64 olduğunda/arch:AVX5121 olarak tanımlanır. Aksi takdirde tanımsız.__AVX512F__, veya/arch:AVX10.1derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya/arch:AVX10.2x64 olduğunda/arch:AVX5121 olarak tanımlanır. Aksi takdirde tanımsız.__AVX512VL__, veya/arch:AVX10.1derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya/arch:AVX10.2x64 olduğunda/arch:AVX5121 olarak tanımlanır. Aksi takdirde tanımsız.__AVX10_VER__veya derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya/arch:AVX10.2x64 olduğunda/arch:AVX10.1AVX10 sürümünü temsil eden bir tamsayı olarak tanımlanır. Aksi takdirde tanımsız._CHAR_UNSIGNEDVarsayılanchartür işaretsizse 1 olarak tanımlanır. (Varsayılan karakter türü işaretsiz)/JAksi takdirde tanımsız.__CLR_VERUygulamayı derlemek için kullanılan Ortak Dil Çalışma Zamanı (CLR) sürümünü temsil eden bir tamsayı değişmez değeri olarak tanımlanır. Değer biçimindeMmmbbbbbkodlanır; buradaMçalışma zamanının ana sürümüdür,mmçalışma zamanının ikincil sürümüdür vebbbbbderleme numarasıdır.__CLR_VER, derleyici seçeneği ayarlandıysa/clrtanımlanır. Aksi takdirde tanımsız.// clr_ver.cpp // compile with: /clr using namespace System; int main() { Console::WriteLine(__CLR_VER); }_CONTROL_FLOW_GUARD(Denetim Akışı Korumasını/guard:cfEtkinleştir) derleyici seçeneği ayarlandığında 1 olarak tanımlanır. Aksi takdirde tanımsız.__COUNTER__0'da başlayan bir tamsayı değişmez değerine genişletir. Bir kaynak dosyada veya kaynak dosyanın dahil edilen üst bilgilerinde kullanıldığında değer 1 artar.__COUNTER__önceden derlenmiş üst bilgileri kullandığınızda durumunu anımsar. Bu makro her zaman tanımlanır.Bu örnek, aynı türdeki üç farklı nesneye benzersiz tanımlayıcılar atamak için kullanır
__COUNTER__. Oluşturucu parametreexampleClassolarak bir tamsayı alır. uygulamasındamain, uygulama benzersiz tanımlayıcı parametresi olarak kullanarakexampleClasstüründe__COUNTER__üç nesne bildirir:// 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_cliC++ olarak derlendiğinde 200406 tamsayı değişmez değeri olarak tanımlanır ve derleyici/clrseçeneği ayarlanır. Aksi takdirde tanımsız. Tanımlandığında,__cplusplus_cliçeviri biriminin tamamında geçerli olur.// 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_winrtC++ olarak derlendiğinde 201009 tamsayı değişmez değeri olarak tanımlanır ve/ZW(Windows Çalışma Zamanı Derleme) derleyici seçeneği ayarlanır. Aksi takdirde tanımsız._CPPRTTI(Çalışma Zamanı Türü Bilgilerini Etkinleştir)/GR1 olarak tanımlanır. Aksi takdirde tanımsız._CPPUNWINDBir veya daha fazla (Özel Durum İşlemeyi/GXEtkinleştir),/clr(Ortak Dil Çalışma Zamanı Derlemesi) veya/EH(Özel Durum İşleme Modeli) derleyici seçenekleri ayarlandıysa 1 olarak tanımlanır. Aksi takdirde tanımsız._DEBUG, veya/LDd/MDdderleyici seçeneği ayarlandığında 1/MTdolarak tanımlanır. Aksi takdirde tanımsız._DLLveya/MD(Çok İş Parçacıklı DLL) derleyici seçeneği ayarlandığında 1/MDdolarak tanımlanır. Aksi takdirde tanımsız.__FUNCDNAME__Kapsayan işlevin süslü adını içeren bir dize değişmez değeri olarak tanımlanır. Makro yalnızca bir işlev içinde tanımlanır.__FUNCDNAME__veya/EPderleyici seçeneğini kullanırsanız/Pmakro genişletemez.Bu örnekte, işlev bilgilerini görüntülemek için ,
__FUNCDNAME__ve__FUNCSIG__makroları kullanılır__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__Kapsayan işlevin imzasını içeren bir dize değişmez değeri olarak tanımlanır. Makro yalnızca bir işlev içinde tanımlanır.__FUNCSIG__veya/EPderleyici seçeneğini kullanırsanız/Pmakro genişletemez. 64 bit hedef için derlendiğinde, çağırma kuralı varsayılan olarakdır__cdecl. Kullanım örneği için makroya__FUNCDNAME__bakın.__FUNCTION__Kapsayan işlevin sıralanmamış adını içeren bir dize değişmez değeri olarak tanımlanır. Makro yalnızca bir işlev içinde tanımlanır.__FUNCTION__veya/EPderleyici seçeneğini kullanırsanız/Pmakro genişletemez. Kullanım örneği için makroya__FUNCDNAME__bakın._INTEGRAL_MAX_BITS64 tamsayı değişmez değeri olarak tanımlanan, bir nonvector integral türü için en büyük boyut (bit cinsinden). Bu makro her zaman tanımlanır.// integral_max_bits.cpp #include <stdio.h> int main() { printf("%d\n", _INTEGRAL_MAX_BITS); }__INTELLISENSE__Visual Studio IDE'de IntelliSense derleyici geçişi sırasında 1 olarak tanımlanır. Aksi takdirde tanımsız. IntelliSense derleyicisinin anlamadığı kodu korumak için bu makroyu kullanabilir veya derleme ile IntelliSense derleyicisi arasında geçiş yapmak için kullanabilirsiniz. Daha fazla bilgi için bkz . IntelliSense Yavaşlığı için Sorun Giderme İpuçları._ISO_VOLATILEDerleyici seçeneği ayarlandıysa/volatile:iso1 olarak tanımlanır. Aksi takdirde tanımsız._KERNEL_MODE(Çekirdek Modu İkili Oluştur)/kernel1 olarak tanımlanır. Aksi takdirde tanımsız._M_AMD64x64 işlemci veya ARM64EC hedefleyen derlemeler için 100 tamsayı değişmez değeri olarak tanımlanır. Aksi takdirde tanımsız._M_ARMARM işlemcilerini hedefleyen derlemeler için 7 tamsayı değişmez değeri olarak tanımlanır. ARM64, ARM64EC ve diğer hedefler için tanımlanmamış._M_ARM_ARMV7VEDERLEYICI seçeneği ARM işlemcilerini hedefleyen derlemeler için ayarlandığında 1/arch:ARMv7VEolarak tanımlanır. Aksi takdirde tanımsız._M_ARM_FPARM işlemci hedefleri için hangi/archderleyici seçeneğinin ayarlandığını gösteren bir tamsayı değişmez değeri olarak tanımlanır. Aksi takdirde tanımsız.ARM seçeneği belirtilmemişse
/arch30-39 aralığındaki bir değer, ARM için varsayılan mimarinin ayarlandığını (VFPv3gösterir).Ayarlandıysa
/arch:VFPv440-49 aralığındaki bir değer.Daha fazla bilgi için bkz
/arch. (ARM).
_M_ARM64ARM64'i hedefleyen derlemeler için 1 olarak tanımlanır. Aksi takdirde tanımsız._M_ARM64ECARM64EC hedefleyen derlemeler için 1 olarak tanımlanır. Aksi takdirde tanımsız._M_CEEHerhangi bir/clr(Ortak Dil Çalışma Zamanı Derlemesi) derleyici seçeneği ayarlandıysa 001 olarak tanımlanır. Aksi takdirde tanımsız._M_CEE_PUREVisual Studio 2015'te kullanım dışı bırakıldı. Derleyici seçeneği ayarlandıysa/clr:pure001 olarak tanımlanır. Aksi takdirde tanımsız._M_CEE_SAFEVisual Studio 2015'te kullanım dışı bırakıldı. Derleyici seçeneği ayarlandıysa/clr:safe001 olarak tanımlanır. Aksi takdirde tanımsız._M_FP_CONTRACTVisual Studio 2022'nin başından itibaren kullanılabilir. veya/fp:contractderleyici seçeneği ayarlandıysa/fp:fast1 olarak tanımlanır. Aksi takdirde tanımsız._M_FP_EXCEPTveya/fp:exceptderleyici seçeneği ayarlandıysa/fp:strict1 olarak tanımlanır. Aksi takdirde tanımsız._M_FP_FASTDerleyici seçeneği ayarlandıysa/fp:fast1 olarak tanımlanır. Aksi takdirde tanımsız._M_FP_PRECISEDerleyici seçeneği ayarlandıysa/fp:precise1 olarak tanımlanır. Aksi takdirde tanımsız._M_FP_STRICTDerleyici seçeneği ayarlandıysa/fp:strict1 olarak tanımlanır. Aksi takdirde tanımsız._M_IX86x86 işlemcileri hedefleyen derlemeler için 600 tamsayı değişmez değeri olarak tanımlanır. Bu makro x64 veya ARM derleme hedefleri için tanımlanmamıştır._M_IX86_FPAyarlanan derleyici seçeneğini veya varsayılanı gösteren/archbir tamsayı değişmez değeri olarak tanımlanır. Derleme hedefi bir x86 işlemci olduğunda bu makro her zaman tanımlanır. Aksi takdirde tanımsız. Tanımlandığında, değer şu şekildedir:Derleyici seçeneği ayarlandıysa
/arch:IA320.Derleyici seçeneği ayarlandıysa
/arch:SSE1., ,
/arch:AVX, ,/arch:AVX2,/arch:AVX512,/arch:AVX10.1veya/arch:AVX10.2derleyici seçeneği ayarlandıysa/arch:SSE22. Derleyici seçeneği belirtilmemişse/archbu değer varsayılan değerdir. Belirtildiğinde/arch:AVX, makro__AVX__da tanımlanır. Belirtildiğinde/arch:AVX2hem hem__AVX__de__AVX2__tanımlanır. Belirtildiğinde/arch:AVX512,__AVX__,__AVX2__,__AVX512BW__,__AVX512CD__,__AVX512DQ__, ,__AVX512F__ve__AVX512VL__de tanımlanır./arch:AVX10.1veya belirtildiğinde ,__AVX____AVX2__, ,__AVX512BW__,__AVX512CD__,__AVX512DQ__, ,__AVX512F__ve__AVX512VL____AVX10_VER__de/arch:AVX10.2tanımlanır.Daha fazla bilgi için bkz
/arch. (x86).
_M_X64x64 işlemci veya ARM64EC hedefleyen derlemeler için 100 tamsayı değişmez değeri olarak tanımlanır. Aksi takdirde tanımsız._MANAGEDDerleyici seçeneği ayarlandığında 1/clrolarak tanımlanır. Aksi takdirde tanımsız._MSC_BUILDDerleyicinin sürüm numarasının düzeltme numarası öğesini içeren bir tamsayı değişmez değeri olarak tanımlanır. Düzeltme numarası, dönem sınırlandırılmış sürüm numarasının son öğesidir. Örneğin, Microsoft C/C++ derleyicisinin sürüm numarası 15.00.20706.01 ise,_MSC_BUILDmakro 1 olur. Bu makro her zaman tanımlanır._MSC_EXTENSIONSVarsayılan olarak/Ze(Dil Uzantılarını Etkinleştir) derleyici seçeneği ayarlandıysa 1 olarak tanımlanır. Aksi takdirde tanımsız._MSC_FULL_VERDerleyicinin sürüm numarasının ana, ikincil ve derleme numarası öğelerini kodlayan bir tamsayı değişmez değeri olarak tanımlanır. Ana sayı, dönem sınırlandırılmış sürüm numarasının ilk öğesi, ikincil sayı ikinci öğe ve derleme numarası üçüncü öğedir.Örneğin, Microsoft C/C++ derleyici sürümü 19.39.33519 ise 193933519
_MSC_FULL_VER. Derleyicinin sürüm numarasını görüntülemek için komut satırına girincl /?. Bu makro her zaman tanımlanır. Derleyici sürümü oluşturma hakkında daha fazla bilgi için visual studio 2019 16.8, 16.9, 16.10 ve 16.11 hakkında daha fazla bilgi için bkz. C++ derleyici sürümü oluşturma ve özellikle_MSC_FULL_VERile başlayan Hizmet sürümleri._MSC_VERDerleyicinin sürüm numarasının ana ve ikincil sayı öğelerini kodlayan bir tamsayı değişmez değeri olarak tanımlanır. Ana sayı, dönem sınırlandırılmış sürüm numarasının ilk öğesi, ikincil sayı ise ikinci öğedir. Örneğin, Microsoft C/C++ derleyicisinin sürüm numarası 17.00.51106.1 ise değeri_MSC_VER1700'dür. Derleyicinin sürüm numarasını görüntülemek için komut satırına girincl /?. Bu makro her zaman tanımlanır.Visual Studio veya sonraki bir sürümünün belirli bir sürümünde derleyici yayınlarını veya güncelleştirmelerini test etmek için işlecini
>=kullanın. Bilinen sürümle karşılaştırmak_MSC_VERiçin koşullu yönergede kullanabilirsiniz. Karşılaştırmak için birbirini dışlayan birkaç sürümünüz varsa, karşılaştırmalarınızı sürüm numarasının azalan sırasına göre sıralarsınız. Örneğin, bu kod Visual Studio 2017 ve sonraki sürümlerde yayımlanan derleyicileri denetler. Ardından, Visual Studio 2015'te veya sonrasında yayımlanan derleyicileri denetler. Ardından Visual Studio 2015'e geçmeden önce yayımlanan tüm derleyicileri denetler:#if _MSC_VER >= 1910 // . . . #elif _MSC_VER >= 1900 // . . . #else // . . . #endifVisual Studio 2019 16.8 ve 16.9 ile aynı ana ve ikincil sürümleri (ve dolayısıyla için aynı değere sahip) paylaşan 16.10 ve 16.11 hakkında daha fazla bilgi için
_MSC_VERbkz . Visual Studio 2017'den başlayarak hizmet sürümleri.Derleyici sürüm oluşturma geçmişi, derleyici sürüm numaraları ve karşılık gelen Visual Studio sürümleri hakkında daha fazla bilgi için bkz . C++ derleyici sürümü oluşturma. Ayrıca, Microsoft C++ ekip blogundaki Visual C++ Derleyici Sürümü .
_MSVC_LANGDerleyici tarafından hedeflenen C++ dil standardını belirten bir tamsayı değişmez değeri olarak tanımlanır. Yalnızca C++ olarak derlenen kod ayarlar. Makro, varsayılan olarak veya derleyici seçeneği belirtildiğinde201402Ltamsayı değişmez değeridir/std:c++14. Derleyici seçeneği belirtilirse201703Lmakro olarak ayarlanır/std:c++17. Derleyici seçeneği belirtilirse202002Lmakro olarak ayarlanır/std:c++20. Seçenek belirtildiğinde daha yüksek ve belirtilmemiş bir değere/std:c++latestayarlanır. Aksi takdirde, makro tanımlanmamıştır._MSVC_LANGVisual Studio 2015 Güncelleştirme 3'te başlayarak makro ve/std(Dil standart sürümünü belirtin) derleyici seçenekleri kullanılabilir.__MSVC_RUNTIME_CHECKSDerleyici seçeneklerinden/RTCbiri ayarlandığında 1 olarak tanımlanır. Aksi takdirde tanımsız._MSVC_TRADITIONAL:- Visual Studio 2017 sürüm 15.8'le başlayarak kullanılabilir: Ön işlemci uyumluluk modu
/experimental:preprocessorderleyici seçeneği ayarlandığında 0 olarak tanımlanır. Geleneksel ön işlemcinin/experimental:preprocessor-kullanımda olduğunu belirtmek için varsayılan olarak 1 olarak veya derleyici seçeneği ayarlandığında tanımlanır. - Visual Studio 2019 sürüm 16.5'le başlayarak kullanılabilir: Ön işlemci uyumluluk modu
/Zc:preprocessorderleyici seçeneği ayarlandığında 0 olarak tanımlanır. Geleneksel ön işlemcinin/Zc:preprocessor-kullanımda olduğunu belirtmek için varsayılan olarak 1 olarak tanımlanır veya derleyici seçeneği ayarlandığında (temelde kullanım/Zc:preprocessordışı/experimental:preprocessorolan öğesinin yerini alır).
#if !defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL // Logic using the traditional preprocessor #else // Logic using cross-platform compatible preprocessor #endif- Visual Studio 2017 sürüm 15.8'le başlayarak kullanılabilir: Ön işlemci uyumluluk modu
_MTveya (Çok İş Parçacıklı DLL) veya/MD/MDd(Çok İş Parçacıklı)/MT/MTdolarak tanımlanır. Aksi takdirde tanımsız._NATIVE_WCHAR_T_DEFINEDDerleyici seçeneği ayarlandığında 1/Zc:wchar_tolarak tanımlanır. Aksi takdirde tanımsız._OPENMP(OpenMP 2.0 Desteğini Etkinleştir)/openmp, tamsayı değişmez değeri 200203 olarak tanımlanır. Bu değer, MSVC tarafından uygulanan OpenMP belirtiminin tarihini temsil eder. Aksi takdirde tanımsız.// _OPENMP_dir.cpp // compile with: /openmp #include <stdio.h> int main() { printf("%d\n", _OPENMP); }_PREFAST_Derleyici seçeneği ayarlandığında 1/analyzeolarak tanımlanır. Aksi takdirde tanımsız.__SANITIZE_ADDRESS__Visual Studio 2019 sürüm 16.9'undan itibaren kullanılabilir. Derleyici seçeneği ayarlandığında 1/fsanitize=addressolarak tanımlanır. Aksi takdirde tanımsız.__TIMESTAMP__Geçerli kaynak dosyanın son değişikliğinin tarihini ve saatini içeren bir dize değişmez değeri olarak, CRTasctimeişlevi tarafından döndürülen kısaltılmış, sabit uzunluk biçiminde, örneğin,Fri 19 Aug 13:32:58 2016. Bu makro her zaman tanımlanır._VC_NODEFAULTLIB(Varsayılan Kitaplık Adını Atla/Zl) derleyici seçeneği ayarlandığında 1 olarak tanımlanır. Aksi takdirde tanımsız._WCHAR_T_DEFINEDVarsayılan/Zc:wchar_tderleyici seçeneği ayarlandığında 1 olarak tanımlanır. Makro_WCHAR_T_DEFINEDtanımlanır, ancak derleyici seçeneği ayarlanırsa/Zc:wchar_t-hiçbir değeri yoktur vewchar_tprojenize dahil edilen bir sistem üst bilgisi dosyasında tanımlanır. Aksi takdirde tanımsız._WIN32Derleme hedefi 32 bit ARM, 64 bit ARM, x86, x64 veya ARM64EC olduğunda 1 olarak tanımlanır. Aksi takdirde tanımsız._WIN64Derleme hedefi 64 bit ARM, x64 veya ARM64EC olduğunda 1 olarak tanımlanır. Aksi takdirde tanımsız._WINRT_DLLC++ olarak derlendiğinde 1 olarak tanımlanır ve her ikisi/ZWde (derleme Windows Çalışma Zamanı) ve/LDveya/LDdderleyici seçenekleri ayarlanır. Aksi takdirde tanımsız.
ATL veya MFC kitaplık sürümünü tanımlayan önişlemci makroları derleyici tarafından önceden tanımlanmış değildir. ATL ve MFC kitaplık üst bilgileri, bu sürüm makrolarını dahili olarak tanımlar. Bunlar, gerekli üst bilgi dahil edilmeden önce yapılan önişlemci yönergelerinde tanımlanmamıştır.
_ATL_VERiçinde<atldef.h>, ATL sürüm numarasını kodlayan bir tamsayı değişmez değeri olarak tanımlanır._MFC_VERiçinde<afxver_.h>, MFC sürüm numarasını kodlayan bir tamsayı değişmez değeri olarak tanımlanır.