Önceden tanımlanmış makrolar

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 dizisidir char.

    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) kullanın /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 #line yö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 /Za 1 olarak tanımlanır. Visual Studio 2022 sürüm 17.2'den başlayarak, C olarak derlendiğinde ve veya /std:c17 derleyici seçeneği belirtilmişse /std:c11 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 /std biri 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 /std biri 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 /std biri 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 /std biri belirtilir.

  • __STDC_VERSION__ C olarak derlendiğinde tanımlanır ve C11 veya C17 seçeneklerinden biri /std belirtilir. için ve 201710L/std:c17için /std:c11olarak genişletir201112L.

  • __STDCPP_DEFAULT_NEW_ALIGNMENT__/std:c17 Veya daha sonra belirtildiğinde, bu makro hizalamadan habersiz operator newçağrısıyla garanti edilen hizalama değerine sahip bir değişmez değere genişletilirsize_t. Daha büyük hizalamalar, gibi operator 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:

  • __ATOM__ Derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda /favor:ATOM 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • __AVX__, , /arch:AVX2veya derleyici seçenekleri ayarlandığında ve derleyici hedefi x86 veya /arch:AVX512 x64 olduğunda /arch:AVX1 olarak tanımlanır. Aksi takdirde tanımsız.

  • __AVX2__veya /arch:AVX512 derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda /arch:AVX2 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • __AVX512BW__ Derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda /arch:AVX512 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • __AVX512CD__ Derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda /arch:AVX512 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • __AVX512DQ__ Derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda /arch:AVX512 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • __AVX512F__ Derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda /arch:AVX512 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • __AVX512VL__ Derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda /arch:AVX512 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • _CHAR_UNSIGNED Varsayılan char tür işaretsizse 1 olarak tanımlanır. (Varsayılan karakter türü işaretsiz) derleyici seçeneği ayarlandığında bu değer tanımlanır./J Aksi takdirde tanımsız.

  • __CLR_VER Uygulamayı 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çiminde Mmmbbbbbkodlanır; burada M çalışma zamanının ana sürümüdür, mm çalışma zamanının ikincil sürümüdür ve bbbbb derleme numarasıdır. __CLR_VER , derleyici seçeneği ayarlandıysa /clr tanı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:cf Etkinleş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 her kullanıldığında değer 1 artırılır. __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 parametre exampleClass olarak bir tamsayı alır. uygulamasındamain, uygulama benzersiz tanımlayıcı parametresi olarak kullanarak __COUNTER__ türünde exampleClassüç 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_cli C++ olarak derlendiğinde 200406 tamsayı değişmez değeri olarak tanımlanır ve derleyici /clr seç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) derleyici seçeneği ayarlandıysa /GR 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • _CPPUNWINDBir veya daha fazla (Özel Durum İşlemeyi /GX Etkinleş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 /MDd/MTd derleyici seçeneği ayarlandığında 1 /LDdolarak tanımlanır. Aksi takdirde tanımsız.

  • _DLLveya /MDd (Çok İş Parçacıklı DLL) derleyici seçeneği ayarlandığında 1 /MD olarak 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 /P derleyici seçeneğini kullanırsanız /EP makro genişletemez.

    Bu örnekte, işlev bilgilerini görüntülemek için , __FUNCSIG__ve __FUNCTION__ makroları kullanılır__FUNCDNAME__.

    // 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 /P derleyici seçeneğini kullanırsanız /EP makro 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 /P derleyici seçeneğini kullanırsanız /EP makro genişletemez. Kullanım örneği için makroya __FUNCDNAME__ bakın.

  • _INTEGRAL_MAX_BITS 64 tamsayı değişmez değeri olarak tanımlanan, vektör olmayan tamsayı 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_VOLATILE Derleyici seçeneği ayarlandıysa /volatile:iso 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • _KERNEL_MODE(Çekirdek Modu İkili Oluştur) derleyici seçeneği ayarlandıysa /kernel 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • _M_AMD64 x64 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_ARM ARM 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_ARMV7VE DERLEYICI seçeneği ARM işlemcilerini hedefleyen derlemeler için ayarlandığında 1 /arch:ARMv7VE olarak tanımlanır. Aksi takdirde tanımsız.

  • _M_ARM_FP ARM işlemci hedefleri için hangi /arch derleyici 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 /arch 30-39 aralığındaki bir değer, ARM için varsayılan mimarinin ayarlandığını (VFPv3 gösterir).

    • Ayarlandıysa /arch:VFPv4 40-49 aralığındaki bir değer.

    • Daha fazla bilgi için bkz /arch . (ARM).

  • _M_ARM64 ARM64'i hedefleyen derlemeler için 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • _M_ARM64EC ARM64EC hedefleyen derlemeler için 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • _M_CEE Herhangi 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_PURE Visual Studio 2015'te kullanım dışı bırakıldı. Derleyici seçeneği ayarlandıysa /clr:pure 001 olarak tanımlanır. Aksi takdirde tanımsız.

  • _M_CEE_SAFE Visual Studio 2015'te kullanım dışı bırakıldı. Derleyici seçeneği ayarlandıysa /clr:safe 001 olarak tanımlanır. Aksi takdirde tanımsız.

  • _M_FP_CONTRACT Visual Studio 2022'nin başından itibaren kullanılabilir. veya /fp:fast derleyici seçeneği ayarlandıysa /fp:contract 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • _M_FP_EXCEPTveya /fp:strict derleyici seçeneği ayarlandıysa /fp:except 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • _M_FP_FAST Derleyici seçeneği ayarlandıysa /fp:fast 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • _M_FP_PRECISE Derleyici seçeneği ayarlandıysa /fp:precise 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • _M_FP_STRICT Derleyici seçeneği ayarlandıysa /fp:strict 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • _M_IX86 x86 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_FP Ayarlanan derleyici seçeneğini veya varsayılanı gösteren /arch bir 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:IA32 0.

    • Derleyici seçeneği ayarlandıysa /arch:SSE 1.

    • , , /arch:AVX, /arch:AVX2veya /arch:AVX512 derleyici seçeneği ayarlandıysa /arch:SSE22. Derleyici seçeneği belirtilmemişse /arch bu değer varsayılan değerdir. Belirtildiğinde /arch:AVX , makro __AVX__ da tanımlanır. Belirtildiğinde /arch:AVX2 hem hem __AVX2__ de __AVX__ tanımlanır. Belirtildiğinde /arch:AVX512 , __AVX__, __AVX2__, __AVX512BW__, __AVX512CD__, __AVX512DQ__, , __AVX512F__ve __AVX512VL__ de tanımlanır.

    • Daha fazla bilgi için bkz /arch . (x86).

  • _M_X64 x64 işlemci veya ARM64EC hedefleyen derlemeler için 100 tamsayı değişmez değeri olarak tanımlanır. Aksi takdirde tanımsız.

  • _MANAGED Derleyici seçeneği ayarlandığında 1 /clr olarak tanımlanır. Aksi takdirde tanımsız.

  • _MSC_BUILD Derleyicinin 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_BUILD makro 1 olur. Bu makro her zaman tanımlanır.

  • _MSC_EXTENSIONS Varsayı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_VER Derleyicinin 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 girin cl /? . 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 _MSC_FULL_VER özellikle Visual Studio 2017 ile başlayan Hizmet sürümleri.

  • _MSC_VER Derleyicinin 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_VER 1700'dür. Derleyicinin sürüm numarasını görüntülemek için komut satırına girin cl /? . 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_VER iç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
    // . . .
    #endif
    

    Visual 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_LANG Derleyici tarafından hedeflenen C++ dil standardını belirten bir tamsayı değişmez değeri olarak tanımlanır. Yalnızca C++ olarak derlenen kodda ayarlanır. Makro, varsayılan olarak veya derleyici seçeneği belirtildiğinde /std:c++14 tamsayı değişmez değeridir201402L. Derleyici seçeneği belirtilirse /std:c++17 makro olarak ayarlanır201703L. Derleyici seçeneği belirtilirse /std:c++20 makro olarak ayarlanır202002L. Seçenek belirtildiğinde daha yüksek ve belirtilmemiş bir değere /std:c++latest ayarlanır. Aksi takdirde, makro tanımlanmamıştır. _MSVC_LANG Visual 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_CHECKS Derleyici seçeneklerinden /RTC biri 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:preprocessor derleyici 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:preprocessor derleyici 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:preprocessor dışı /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
    
  • _MTveya (Çok İş Parçacıklı DLL) veya /MTd/MT (Çok İş Parçacıklı) belirtildiğinde 1 /MD olarak tanımlanır./MDd Aksi takdirde tanımsız.

  • _NATIVE_WCHAR_T_DEFINED Derleyici seçeneği ayarlandığında 1 /Zc:wchar_t olarak tanımlanır. Aksi takdirde tanımsız.

  • _OPENMP(OpenMP 2.0 Desteğini Etkinleştir) derleyici seçeneği ayarlandıysa /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 /analyze olarak 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=address olarak 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, CRT asctime iş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_DEFINED Varsayılan /Zc:wchar_t derleyici seçeneği ayarlandığında 1 olarak tanımlanır. Makro _WCHAR_T_DEFINED tanımlanır, ancak derleyici seçeneği ayarlanırsa /Zc:wchar_t- hiçbir değeri yoktur ve wchar_t projenize dahil edilen bir sistem üst bilgisi dosyasında tanımlanır. Aksi takdirde tanımsız.

  • _WIN32 Derleme hedefi 32 bit ARM, 64 bit ARM, x86 veya x64 olduğunda 1 olarak tanımlanır. Aksi takdirde tanımsız.

  • _WIN64 Derleme hedefi 64 bit ARM veya x64 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 /ZW de (derleme Windows Çalışma Zamanı) ve /LD veya /LDd derleyici 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_VER içinde <atldef.h> , ATL sürüm numarasını kodlayan bir tamsayı değişmez değeri olarak tanımlanır.

  • _MFC_VER içinde <afxver_.h> , MFC sürüm numarasını kodlayan bir tamsayı değişmez değeri olarak tanımlanır.

Ayrıca bkz.

Makrolar (C/C++)
Ön işlemci işleçleri
Önişlemci yönergeleri