Önceden tanımlanmış makrolarPredefined macros

Microsoft C/C++ derleyicisi (MSVC), dile (C veya C++), derleme hedefine ve seçilen derleyici seçeneklerine bağlı olarak belirli Önişlemci makrolarını önceden tanımlar.The Microsoft C/C++ compiler (MSVC) predefines certain preprocessor macros, depending on the language (C or C++), the compilation target, and the chosen compiler options.

MSVC, ANSI/ISO C99, C11 ve C17 standartları ve ISO C++ 14 ve C++ 17 standartları için gereken önceden tanımlanmış Önişlemci makrolarını destekler.MSVC supports the predefined preprocessor macros required by the ANSI/ISO C99, C11, and C17 standards, and the ISO C++14 and C++17 standards. Uygulama, Microsoft 'a özgü birkaç önişlemci makrosunu da destekler.The implementation also supports several more Microsoft-specific preprocessor macros. Bazı makrolar yalnızca belirli derleme ortamları veya derleyici seçenekleri için tanımlanır.Some macros are defined only for specific build environments or compiler options. Aksi belirtilmedikçe, makrolar, /D derleyici seçeneği bağımsız değişkenleri olarak belirtimiş gibi bir çeviri birimi boyunca tanımlanır.Except where noted, the macros are defined throughout a translation unit as if they were specified as /D compiler option arguments. Tanımlandığında, makrolar derlemeden önce Önişlemci tarafından belirtilen değerlere genişletilir.When defined, the macros are expanded to the specified values by the preprocessor before compilation. Önceden tanımlanmış makrolar bağımsız değişken almaz ve yeniden tanımlanamaz.The predefined macros take no arguments and can't be redefined.

Standart önceden tanımlanmış tanımlayıcıStandard predefined identifier

Derleyici ISO C99 ve ISO C++ 11 tarafından belirtilen önceden tanımlanmış tanımlayıcıyı destekler.The compiler supports this predefined identifier specified by ISO C99 and ISO C++11.

  • __func__ İşlev yerel statik const dizisi olarak kapsayan işlevin nitelenmemiş ve donatımış adı char .__func__ The unqualified and unadorned name of the enclosing function as a function-local static const array of char.

    void example(){
        printf("%s\n", __func__);
    } // prints "example"
    

Standart önceden tanımlanmış makrolarStandard predefined macros

Derleyici ISO C99, C11, C17 ve ISO C++ 17 standartları tarafından belirtilen önceden tanımlanmış makroları destekler.The compiler supports these predefined macros specified by the ISO C99, C11, C17, and ISO C++17 standards.

  • __cplusplus Çeviri birimi C++ olarak derlendiğinde tamsayı sabit değeri olarak tanımlanır.__cplusplus Defined as an integer literal value when the translation unit is compiled as C++. Aksi takdirde, tanımsız.Otherwise, undefined.

  • __DATE__ Geçerli kaynak dosyanın derleme tarihi.__DATE__ The compilation date of the current source file. Tarih, aaa gg yyyy biçiminde sabit uzunluklu bir dize sabit değeri olur.The date is a constant length string literal of the form Mmm dd yyyy. Ay adı aaa , C çalışma zamanı KITAPLıĞı (CRT) asctime işlevi tarafından oluşturulan kısaltılmış ay adı ile aynıdır.The month name Mmm is the same as the abbreviated month name generated by the C Runtime Library (CRT) asctime function. Değer 10 ' dan küçükse, gg 'nin ilk karakteri bir alandır.The first character of date dd is a space if the value is less than 10. Bu makro her zaman tanımlanmıştır.This macro is always defined.

  • __FILE__ Geçerli kaynak dosyanın adı.__FILE__ The name of the current source file. __FILE__ bir karakter dizesi değişmez değerine genişletilir.__FILE__ expands to a character string literal. Dosyanın tam yolunun görüntülendiğinden emin olmak için, kullanın /FC (kaynak kodu dosyasının Tanılamadaki Tam yolu).To ensure that the full path to the file is displayed, use /FC (Full Path of Source Code File in Diagnostics). Bu makro her zaman tanımlanmıştır.This macro is always defined.

  • __LINE__ Geçerli kaynak dosyasında tamsayı satır numarası olarak tanımlanır.__LINE__ Defined as the integer line number in the current source file. __LINE__Makronun değeri bir yönerge kullanılarak değiştirilebilir #line .The value of the __LINE__ macro can be changed by using a #line directive. Bu makro her zaman tanımlanmıştır.This macro is always defined.

  • __STDC__ Yalnızca C olarak derlendiğinde ve derleyici seçeneği belirtilmişse 1 olarak tanımlanır /Za .__STDC__ Defined as 1 only when compiled as C and if the /Za compiler option is specified. Aksi takdirde, tanımsız.Otherwise, undefined.

  • __STDC_HOSTED__ Uygulama, tüm gerekli standart kitaplığı destekleyen bir barındırılan uygulama ise, 1 olarak tanımlanır.__STDC_HOSTED__ Defined as 1 if the implementation is a hosted implementation, one that supports the entire required standard library. Aksi takdirde, 0 olarak tanımlanır.Otherwise, defined as 0.

  • __STDC_NO_ATOMICS__ Uygulama isteğe bağlı standart Atomics 'yi desteklemiyorsa, 1 olarak tanımlanır.__STDC_NO_ATOMICS__ Defined as 1 if the implementation doesn't support optional standard atomics. MSVC uygulamasını C olarak derlendiğinde ve C11 ya da C17 seçeneklerinden biri belirtildiğinde, bunu 1 olarak tanımlar /std .The MSVC implementation defines it as 1 when compiled as C and one of the /std C11 or C17 options is specified.

  • __STDC_NO_COMPLEX__ Uygulama isteğe bağlı standart karmaşık sayıları desteklemiyorsa 1 olarak tanımlanır.__STDC_NO_COMPLEX__ Defined as 1 if the implementation doesn't support optional standard complex numbers. MSVC uygulamasını C olarak derlendiğinde ve C11 ya da C17 seçeneklerinden biri belirtildiğinde, bunu 1 olarak tanımlar /std .The MSVC implementation defines it as 1 when compiled as C and one of the /std C11 or C17 options is specified.

  • __STDC_NO_THREADS__ Uygulama isteğe bağlı standart iş parçacıklarını desteklemiyorsa 1 olarak tanımlanır.__STDC_NO_THREADS__ Defined as 1 if the implementation doesn't support optional standard threads. MSVC uygulamasını C olarak derlendiğinde ve C11 ya da C17 seçeneklerinden biri belirtildiğinde, bunu 1 olarak tanımlar /std .The MSVC implementation defines it as 1 when compiled as C and one of the /std C11 or C17 options is specified.

  • __STDC_NO_VLA__ Uygulama standart değişken uzunluklu dizileri desteklemiyorsa 1 olarak tanımlanır.__STDC_NO_VLA__ Defined as 1 if the implementation doesn't support standard variable length arrays. MSVC uygulamasını C olarak derlendiğinde ve C11 ya da C17 seçeneklerinden biri belirtildiğinde, bunu 1 olarak tanımlar /std .The MSVC implementation defines it as 1 when compiled as C and one of the /std C11 or C17 options is specified.

  • __STDC_VERSION__ C olarak derlendiğinde ve /std C11 ya da C17 seçeneklerinden biri belirtildiğinde tanımlanır.__STDC_VERSION__ Defined when compiled as C and one of the /std C11 or C17 options is specified. İçin 201112L /std:c11 , ve için genişler 201710L /std:c17 .It expands to 201112L for /std:c11, and 201710L for /std:c17.

  • __STDCPP_THREADS__ Yalnızca bir programda birden fazla yürütme iş parçacığı ve C++ olarak derlenmiş ise 1 olarak tanımlanır.__STDCPP_THREADS__ Defined as 1 if and only if a program can have more than one thread of execution, and compiled as C++. Aksi takdirde, tanımsız.Otherwise, undefined.

  • __TIME__ Önceden işlenmiş çeviri biriminin çevirisi süresi.__TIME__ The time of translation of the preprocessed translation unit. Bu zaman, HH: mm: ss biçimindeki bir karakter dizesi değişmez DEĞERI, CRT asctime işlevi tarafından döndürülen zaman ile aynıdır.The time is a character string literal of the form hh:mm:ss, the same as the time returned by the CRT asctime function. Bu makro her zaman tanımlanmıştır.This macro is always defined.

Microsoft 'a özgü önceden tanımlanmış makrolarMicrosoft-specific predefined macros

MSVC bu önceden tanımlanmış ek makroları destekler.MSVC supports these additional predefined macros.

  • __ATOM__/favor:ATOMDerleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda, 1 olarak tanımlanır.__ATOM__ Defined as 1 when the /favor:ATOM compiler option is set and the compiler target is x86 or x64. Aksi takdirde, tanımsız.Otherwise, undefined.

  • __AVX__/arch:AVX,, /arch:AVX2 Veya /arch:AVX512 derleyici seçenekleri ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda, 1 olarak tanımlanır.__AVX__ Defined as 1 when the /arch:AVX, /arch:AVX2, or /arch:AVX512 compiler options are set and the compiler target is x86 or x64. Aksi takdirde, tanımsız.Otherwise, undefined.

  • __AVX2__/arch:AVX2Or /arch:AVX512 derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda, 1 olarak tanımlanır.__AVX2__ Defined as 1 when the /arch:AVX2 or /arch:AVX512 compiler option is set and the compiler target is x86 or x64. Aksi takdirde, tanımsız.Otherwise, undefined.

  • __AVX512BW__/arch:AVX512Derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda, 1 olarak tanımlanır.__AVX512BW__ Defined as 1 when the /arch:AVX512 compiler option is set and the compiler target is x86 or x64. Aksi takdirde, tanımsız.Otherwise, undefined.

  • __AVX512CD__/arch:AVX512Derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda, 1 olarak tanımlanır.__AVX512CD__ Defined as 1 when the /arch:AVX512 compiler option is set and the compiler target is x86 or x64. Aksi takdirde, tanımsız.Otherwise, undefined.

  • __AVX512DQ__/arch:AVX512Derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda, 1 olarak tanımlanır.__AVX512DQ__ Defined as 1 when the /arch:AVX512 compiler option is set and the compiler target is x86 or x64. Aksi takdirde, tanımsız.Otherwise, undefined.

  • __AVX512F__/arch:AVX512Derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda, 1 olarak tanımlanır.__AVX512F__ Defined as 1 when the /arch:AVX512 compiler option is set and the compiler target is x86 or x64. Aksi takdirde, tanımsız.Otherwise, undefined.

  • __AVX512VL__/arch:AVX512Derleyici seçeneği ayarlandığında ve derleyici hedefi x86 veya x64 olduğunda, 1 olarak tanımlanır.__AVX512VL__ Defined as 1 when the /arch:AVX512 compiler option is set and the compiler target is x86 or x64. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _CHAR_UNSIGNED Varsayılan tür işaretsiz ise 1 olarak tanımlanır char ._CHAR_UNSIGNED Defined as 1 if the default char type is unsigned. Bu değer, /J (varsayılan karakter türü imzasız) derleyici seçeneği ayarlandığında tanımlanır.This value is defined when the /J (Default char type is unsigned) compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • __CLR_VER Uygulamayı derlemek için kullanılan ortak dil çalışma zamanının (CLR) sürümünü temsil eden bir tamsayı sabiti olarak tanımlanır.__CLR_VER Defined as an integer literal that represents the version of the Common Language Runtime (CLR) used to compile the app. Değer, Mmmbbbbb M çalışma zamanının ana sürümü olan, mm çalışma zamanının ikincil sürümüdür ve yapı numarası olduğunda, biçiminde kodlanır bbbbb .The value is encoded in the form Mmmbbbbb, where M is the major version of the runtime, mm is the minor version of the runtime, and bbbbb is the build number. __CLR_VER , /clr derleyici seçeneği ayarlandıysa tanımlanmıştır.__CLR_VER is defined if the /clr compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

    // clr_ver.cpp
    // compile with: /clr
    using namespace System;
    int main() {
       Console::WriteLine(__CLR_VER);
    }
    
  • _CONTROL_FLOW_GUARD /guard:cf (Control Flow Guard 'ı etkinleştir) derleyici seçeneği ayarlandığında 1 olarak tanımlanır._CONTROL_FLOW_GUARD Defined as 1 when the /guard:cf (Enable Control Flow Guard) compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • __COUNTER__ 0 ' dan başlayan bir tamsayı değişmez değerine genişletilir.__COUNTER__ Expands to an integer literal that starts at 0. Değer, kaynak dosyada her kullanıldığında veya kaynak dosyanın eklenen üst bilgilerinde 1 ile artırılır.The value is incremented by 1 every time it's used in a source file, or in included headers of the source file. __COUNTER__ önceden derlenmiş üst bilgiler kullandığınızda durumunu anımsar.__COUNTER__ remembers its state when you use precompiled headers. Bu makro her zaman tanımlanmıştır.This macro is always defined.

    Bu örnek __COUNTER__ , aynı türdeki üç farklı nesneye benzersiz tanımlayıcılar atamak için kullanır.This example uses __COUNTER__ to assign unique identifiers to three different objects of the same type. exampleClassOluşturucu bir parametre olarak bir tamsayı alır.The exampleClass constructor takes an integer as a parameter. ' De main , uygulama exampleClass __COUNTER__ benzersiz tanımlayıcı parametresi olarak kullanarak türünde üç nesne bildirir:In main, the application declares three objects of type exampleClass, using __COUNTER__ as the unique identifier parameter:

    // 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 ve bir derleyici seçeneği ayarlandığında, tamsayı sabit değeri 200406 olarak tanımlanır /clr .__cplusplus_cli Defined as the integer literal value 200406 when compiled as C++ and a /clr compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined. Tanımlandığında, __cplusplus_cli çeviri birimi boyunca geçerli olur.When defined, __cplusplus_cli is in effect throughout the translation unit.

    // 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 ve /ZW (Windows çalışma zamanı derlemesi) derleyici seçeneği ayarlandığında, tamsayı sabit değeri 201009 olarak tanımlanır.__cplusplus_winrt Defined as the integer literal value 201009 when compiled as C++ and the /ZW (Windows Runtime Compilation) compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _CPPRTTI /GR (Run-Time türü bilgilerini etkinleştir) derleyici seçeneği ayarlandıysa 1 olarak tanımlanır._CPPRTTI Defined as 1 if the /GR (Enable Run-Time Type Information) compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _CPPUNWINDBir veya daha fazla /GX (özel durum işlemeyi etkinleştir), /clr (ortak dil çalışma zamanı derlemesi) veya /EH (özel durum işleme modeli) derleyici seçenekleri ayarlandıysa 1 olarak tanımlanır._CPPUNWIND Defined as 1 if one or more of the /GX (Enable Exception Handling), /clr (Common Language Runtime Compilation), or /EH (Exception Handling Model) compiler options are set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _DEBUG/LDd, /MDd Veya derleyici seçeneği ayarlandığında 1 olarak tanımlanır /MTd ._DEBUG Defined as 1 when the /LDd, /MDd, or /MTd compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _DLL/MDOr /MDd (çok Iş parçacıklı DLL) derleyici seçeneği ayarlandığında 1 olarak tanımlanır._DLL Defined as 1 when the /MD or /MDd (Multithreaded DLL) compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • __FUNCDNAME__ Kapsayan işlevin düzenlenmiş adını içeren bir dize sabit değeri olarak tanımlanır.__FUNCDNAME__ Defined as a string literal that contains the decorated name of the enclosing function. Makro yalnızca bir işlev içinde tanımlanır.The macro is defined only within a function. __FUNCDNAME__ /EP Or derleyici seçeneğini kullanırsanız makro genişletilmez /P .The __FUNCDNAME__ macro isn't expanded if you use the /EP or /P compiler option.

    Bu örnek, __FUNCDNAME__ __FUNCSIG__ __FUNCTION__ işlev bilgilerini göstermek için, ve makrolarını kullanır.This example uses the __FUNCDNAME__, __FUNCSIG__, and __FUNCTION__ macros to display function information.

    // 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 sabit değeri olarak tanımlanır.__FUNCSIG__ Defined as a string literal that contains the signature of the enclosing function. Makro yalnızca bir işlev içinde tanımlanır.The macro is defined only within a function. __FUNCSIG__ /EP Or derleyici seçeneğini kullanırsanız makro genişletilmez /P .The __FUNCSIG__ macro isn't expanded if you use the /EP or /P compiler option. 64 bitlik bir hedef için derlendiğinde, çağırma kuralı __cdecl Varsayılan olarak olur.When compiled for a 64-bit target, the calling convention is __cdecl by default. Kullanım örneği için, __FUNCDNAME__ makroya bakın.For an example of usage, see the __FUNCDNAME__ macro.

  • __FUNCTION__ Kapsayan işlevin açıklanmıyor adını içeren bir dize sabit değeri olarak tanımlanır.__FUNCTION__ Defined as a string literal that contains the undecorated name of the enclosing function. Makro yalnızca bir işlev içinde tanımlanır.The macro is defined only within a function. __FUNCTION__ /EP Or derleyici seçeneğini kullanırsanız makro genişletilmez /P .The __FUNCTION__ macro isn't expanded if you use the /EP or /P compiler option. Kullanım örneği için, __FUNCDNAME__ makroya bakın.For an example of usage, see the __FUNCDNAME__ macro.

  • _INTEGRAL_MAX_BITS Vektör olmayan tamsayı türü için en büyük boyut olan 64 (bit cinsinden) olarak tanımlanır._INTEGRAL_MAX_BITS Defined as the integer literal value 64, the maximum size (in bits) for a non-vector integral type. Bu makro her zaman tanımlanmıştır.This macro is always defined.

    // integral_max_bits.cpp
    #include <stdio.h>
    int main() {
        printf("%d\n", _INTEGRAL_MAX_BITS);
    }
    
  • __INTELLISENSE__ Visual Studio IDE 'de bir IntelliSense derleyicisi geçişi sırasında 1 olarak tanımlanır.__INTELLISENSE__ Defined as 1 during an IntelliSense compiler pass in the Visual Studio IDE. Aksi takdirde, tanımsız.Otherwise, undefined. IntelliSense derleyicisinin tanımadığı kodu korumak için bu makroyu kullanabilir veya yapı ile IntelliSense derleyicisi arasında geçiş yapmak için kullanabilirsiniz.You can use this macro to guard code the IntelliSense compiler doesn't understand, or use it to toggle between the build and IntelliSense compiler. Daha fazla bilgi için bkz. IntelliSense Yavaşlılığını Için sorun giderme ipuçları.For more information, see Troubleshooting Tips for IntelliSense Slowness.

  • _ISO_VOLATILE/volatile:isoDerleyici seçeneği ayarlandıysa 1 olarak tanımlanır._ISO_VOLATILE Defined as 1 if the /volatile:iso compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _KERNEL_MODE /kernel (Çekirdek modu ikilisi oluştur) derleyici seçeneği ayarlandıysa 1 olarak tanımlanır._KERNEL_MODE Defined as 1 if the /kernel (Create Kernel Mode Binary) compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _M_AMD64 X64 işlemcileri hedefleyen derlemeler için 100 tamsayı sabit değeri olarak tanımlanır._M_AMD64 Defined as the integer literal value 100 for compilations that target x64 processors. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _M_ARM ARM işlemcilerini hedefleyen derlemeler için 7 tamsayı sabit değeri olarak tanımlanır._M_ARM Defined as the integer literal value 7 for compilations that target ARM processors. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _M_ARM_ARMV7VE/arch:ARMv7VEDerleyici SEÇENEĞI ARM İşlemcileri hedefleyen derlemeler için ayarlandığında 1 olarak tanımlanır._M_ARM_ARMV7VE Defined as 1 when the /arch:ARMv7VE compiler option is set for compilations that target ARM processors. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _M_ARM_FP/archARM işlemci hedefleri için hangi derleyici seçeneğinin ayarlandığını belirten tamsayı sabit değeri olarak tanımlanır._M_ARM_FP Defined as an integer literal value that indicates which /arch compiler option was set for ARM processor targets. Aksi takdirde, tanımsız.Otherwise, undefined.

    • ARM /arch seçeneği belirtilmemişse, ARM için varsayılan mimariyi belirten 30-39 aralığında bir değer ( VFPv3 ) ayarlanır.A value in the range 30-39 if no /arch ARM option was specified, indicating the default architecture for ARM was set (VFPv3).

    • Ayarlanmışsa 40-49 aralığındaki bir değer /arch:VFPv4 .A value in the range 40-49 if /arch:VFPv4 was set.

    • Daha fazla bilgi için bkz. /arch (ARM).For more information, see /arch (ARM).

  • _M_ARM64 64-bit ARM İşlemcileri hedefleyen derlemeler için 1 olarak tanımlanmıştır._M_ARM64 Defined as 1 for compilations that target 64-bit ARM processors. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _M_CEEVarsa, 001 olarak tanımlanır /clr (ortak dil çalışma zamanı derlemesi) derleyici seçeneği ayarlanır._M_CEE Defined as 001 if any /clr (Common Language Runtime Compilation) compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _M_CEE_PURE Visual Studio 2015 ' de kullanım dışı bırakıldı._M_CEE_PURE Deprecated beginning in Visual Studio 2015. /clr:pureDerleyici seçeneği ayarlandıysa 001 olarak tanımlanır.Defined as 001 if the /clr:pure compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _M_CEE_SAFE Visual Studio 2015 ' de kullanım dışı bırakıldı._M_CEE_SAFE Deprecated beginning in Visual Studio 2015. /clr:safeDerleyici seçeneği ayarlandıysa 001 olarak tanımlanır.Defined as 001 if the /clr:safe compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _M_FP_EXCEPT/fp:exceptOr /fp:strict derleyici seçeneği ayarlandıysa 1 olarak tanımlanır._M_FP_EXCEPT Defined as 1 if the /fp:except or /fp:strict compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _M_FP_FAST/fp:fastDerleyici seçeneği ayarlandıysa 1 olarak tanımlanır._M_FP_FAST Defined as 1 if the /fp:fast compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _M_FP_PRECISE/fp:preciseDerleyici seçeneği ayarlandıysa 1 olarak tanımlanır._M_FP_PRECISE Defined as 1 if the /fp:precise compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _M_FP_STRICT/fp:strictDerleyici seçeneği ayarlandıysa 1 olarak tanımlanır._M_FP_STRICT Defined as 1 if the /fp:strict compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _M_IX86 X86 işlemcileri hedefleyen derlemeler için 600 tamsayı sabit değeri olarak tanımlanır._M_IX86 Defined as the integer literal value 600 for compilations that target x86 processors. Bu makro x64 veya ARM derleme hedefleri için tanımlı değil.This macro isn't defined for x64 or ARM compilation targets.

  • _M_IX86_FP Ayarlanan derleyici seçeneğini veya varsayılan değeri belirten bir tamsayı sabit değeri olarak tanımlanır /arch ._M_IX86_FP Defined as an integer literal value that indicates the /arch compiler option that was set, or the default. Bu makro, derleme hedefi bir x86 işlemcisi olduğunda her zaman tanımlanır.This macro is always defined when the compilation target is an x86 processor. Aksi takdirde, tanımsız.Otherwise, undefined. Tanımlandığında değer şu şekilde olur:When defined, the value is:

    • /arch:IA32derleyici seçeneği ayarlandıysa 0.0 if the /arch:IA32 compiler option was set.

    • /arch:SSEderleyici seçeneği ayarlandıysa 1.1 if the /arch:SSE compiler option was set.

    • /arch:SSE2,, /arch:AVX /arch:AVX2 veya /arch:AVX512 derleyici seçeneği ayarlandıysa 2.2 if the /arch:SSE2, /arch:AVX, /arch:AVX2, or /arch:AVX512 compiler option was set. Bu değer, bir /arch derleyici seçeneği belirtilmemişse varsayılan değerdir.This value is the default if an /arch compiler option wasn't specified. Belirtildiğinde /arch:AVX , makro __AVX__ da tanımlanır.When /arch:AVX is specified, the macro __AVX__ is also defined. Belirtildiğinde /arch:AVX2 , her ikisi __AVX__ __AVX2__ de tanımlanır.When /arch:AVX2 is specified, both __AVX__ and __AVX2__ are also defined. Belirtildiğinde,,,,,, /arch:AVX512 __AVX__ __AVX2__ __AVX512BW__ __AVX512CD__ __AVX512DQ__ __AVX512F__ ve __AVX512VL__ de tanımlanır.When /arch:AVX512 is specified, __AVX__, __AVX2__, __AVX512BW__, __AVX512CD__, __AVX512DQ__, __AVX512F__, and __AVX512VL__ are also defined.

    • Daha fazla bilgi için bkz. /arch (x86).For more information, see /arch (x86).

  • _M_X64 X64 işlemcileri hedefleyen derlemeler için 100 tamsayı sabit değeri olarak tanımlanır._M_X64 Defined as the integer literal value 100 for compilations that target x64 processors. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _MANAGED/clrDerleyici seçeneği ayarlandığında 1 olarak tanımlanır._MANAGED Defined as 1 when the /clr compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _MSC_BUILD Derleyicinin sürüm numarasının düzeltme numarası öğesini içeren bir tamsayı sabit değeri olarak tanımlanır._MSC_BUILD Defined as an integer literal that contains the revision number element of the compiler's version number. Düzeltme numarası, dönem ile ayrılmış sürüm numarasının dördüncü öğesidir.The revision number is the fourth element of the period-delimited version number. Örneğin, Microsoft C/C++ derleyicisinin sürüm numarası 15.00.20706.01 ise, _MSC_BUILD makro 1 olarak değerlendirilir.For example, if the version number of the Microsoft C/C++ compiler is 15.00.20706.01, the _MSC_BUILD macro evaluates to 1. Bu makro her zaman tanımlanmıştır.This macro is always defined.

  • _MSC_EXTENSIONSVarsayılan /Ze (dil uzantılarını etkinleştir) derleyici seçeneği ayarlandıysa 1 olarak tanımlanır._MSC_EXTENSIONS Defined as 1 if the on-by-default /Ze (Enable Language Extensions) compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _MSC_FULL_VER Derleyicinin sürüm numarasının büyük, küçük ve derleme numarası öğelerini kodlayan bir tamsayı sabit değeri olarak tanımlanır._MSC_FULL_VER Defined as an integer literal that encodes the major, minor, and build number elements of the compiler's version number. Ana sayı, dönem ile ayrılmış sürüm numarasının ilk öğesidir, küçük sayı ikinci öğedir ve yapı numarası üçüncü öğedir.The major number is the first element of the period-delimited version number, the minor number is the second element, and the build number is the third element. Örneğin, Microsoft C/C++ derleyicisinin sürüm numarası 15.00.20706.01 ise, _MSC_FULL_VER makro 150020706 olarak değerlendirilir.For example, if the version number of the Microsoft C/C++ compiler is 15.00.20706.01, the _MSC_FULL_VER macro evaluates to 150020706. cl /?Derleyicinin sürüm numarasını görüntülemek için komut satırına yazın.Enter cl /? at the command line to view the compiler's version number. Bu makro her zaman tanımlanmıştır.This macro is always defined.

  • _MSC_VER Derleyicinin sürüm numarasının büyük ve küçük sayı öğelerini kodlayan bir tamsayı sabit değeri olarak tanımlanır._MSC_VER Defined as an integer literal that encodes the major and minor number elements of the compiler's version number. Ana sayı, dönem ile ayrılmış sürüm numarasının ilk öğesidir ve ikincil sayı ikinci öğedir.The major number is the first element of the period-delimited version number and the minor number is the second element. Örneğin, Microsoft C/C++ derleyicisinin sürüm numarası 17.00.51106.1 ise, _MSC_VER makro 1700 olarak değerlendirilir.For example, if the version number of the Microsoft C/C++ compiler is 17.00.51106.1, the _MSC_VER macro evaluates to 1700. cl /?Derleyicinin sürüm numarasını görüntülemek için komut satırına yazın.Enter cl /? at the command line to view the compiler's version number. Bu makro her zaman tanımlanmıştır.This macro is always defined.

    Visual Studio sürümVisual Studio version _MSC_VER
    Visual Studio 6.0Visual Studio 6.0 12001200
    Visual Studio .NET 2002 (7,0)Visual Studio .NET 2002 (7.0) 13001300
    Visual Studio .NET 2003 (7,1)Visual Studio .NET 2003 (7.1) 13101310
    Visual Studio 2005 (8,0)Visual Studio 2005 (8.0) 14001400
    Visual Studio 2008 (9,0)Visual Studio 2008 (9.0) 15001500
    Visual Studio 2010 (10,0)Visual Studio 2010 (10.0) 16001600
    Visual Studio 2012 (11,0)Visual Studio 2012 (11.0) 17001700
    Visual Studio 2013 (12,0)Visual Studio 2013 (12.0) 18001800
    Visual Studio 2015 (14,0)Visual Studio 2015 (14.0) 19001900
    Visual Studio 2017 RTW (15,0)Visual Studio 2017 RTW (15.0) 19101910
    Visual Studio 2017 sürüm 15.3Visual Studio 2017 version 15.3 19111911
    Visual Studio 2017 sürüm 15.5Visual Studio 2017 version 15.5 19121912
    Visual Studio 2017 sürüm 15.6Visual Studio 2017 version 15.6 19131913
    Visual Studio 2017 sürüm 15.7 Sürüm NotlarıVisual Studio 2017 version 15.7 19141914
    Visual Studio 2017 sürüm 15,8Visual Studio 2017 version 15.8 19151915
    Visual Studio 2017 sürüm 15,9Visual Studio 2017 version 15.9 19161916
    Visual Studio 2019 RTW (16,0)Visual Studio 2019 RTW (16.0) 19201920
    Visual Studio 2019 sürüm 16.1Visual Studio 2019 version 16.1 19211921
    Visual Studio 2019 sürüm 16.2 Visual Studio 2019 version 16.2 19221922
    Visual Studio 2019 sürüm 16,3Visual Studio 2019 version 16.3 19231923
    Visual Studio 2019 sürüm 16.4Visual Studio 2019 version 16.4 19241924
    Visual Studio 2019 sürüm 16,5Visual Studio 2019 version 16.5 19251925
    Visual Studio 2019 sürüm 16,6Visual Studio 2019 version 16.6 19261926
    Visual Studio 2019 sürüm 16,7Visual Studio 2019 version 16.7 19271927
    Visual Studio 2019 sürüm 16,8, 16,9Visual Studio 2019 version 16.8, 16.9 19281928
    Visual Studio 2019 sürüm 16,10 PreviewVisual Studio 2019 version 16.10 preview 19291929

    Visual Studio 'nun belirli bir sürümünde veya sonrasında derleyici sürümlerini veya güncelleştirmelerini test etmek için >= işlecini kullanın.To test for compiler releases or updates in a given version of Visual Studio or after, use the >= operator. Bunu, bilinen bir sürümle karşılaştırmak için koşullu bir yönergede kullanabilirsiniz _MSC_VER .You can use it in a conditional directive to compare _MSC_VER against that known version. Karşılaştırmak için birbirini dışlayan birkaç sürümleriniz varsa, karşılaştırmaları sürüm numarası azalan sırada sıralayın.If you have several mutually exclusive versions to compare, order your comparisons in descending order of version number. Örneğin, bu kod Visual Studio 2017 ve üzeri sürümlerde yayınlanan derleyicileri denetler.For example, this code checks for compilers released in Visual Studio 2017 and later. Ardından, Visual Studio 2015 ' de veya sonrasında yayınlanan derleyicileri denetler.Next, it checks for compilers released in or after Visual Studio 2015. Ardından, Visual Studio 2015 'den önce yayınlanan tüm derleyicileri denetler:Then it checks for all compilers released before Visual Studio 2015:

    #if _MSC_VER >= 1910
    // . . .
    #elif _MSC_VER >= 1900
    // . . .
    #else
    // . . .
    #endif
    

    Büyük ve küçük sayılar paylaşan derleyici sürümlerini test etmek için, ' de karşılaştırmalar için ana, ikincil ve derleme numaralarını kullanın _MSC_FULL_VER .To test for compiler versions that share major and minor numbers, use the major, minor, and build numbers in _MSC_FULL_VER for comparisons. Visual Studio 2019 sürüm 16,9 ' deki derleyiciler _MSC_FULL_VER 192829500 veya daha büyük bir değere sahip.The compilers in Visual Studio 2019 version 16.9 have an _MSC_FULL_VER value of 192829500 or greater.

    Daha fazla bilgi için bkz. Microsoft C++ ekip blogu 'nda Visual C++ derleyici sürümü .For more information, see Visual C++ Compiler Version in the Microsoft C++ Team Blog.

  • _MSVC_LANG Derleyicinin hedeflediği C++ dili standardını belirten bir tamsayı sabit değeri olarak tanımlanır._MSVC_LANG Defined as an integer literal that specifies the C++ language standard targeted by the compiler. Yalnızca C++ olarak derlenen kodda ayarlanır.It's set only in code compiled as C++. Makro varsayılan olarak 201402L tamsayı sabit değeridir veya /std:c++14 derleyici seçeneği belirtildiğinde.The macro is the integer literal value 201402L by default, or when the /std:c++14 compiler option is specified. Derleyici seçeneği belirtilmişse, makro 201703L olarak ayarlanır /std:c++17 .The macro is set to 201703L if the /std:c++17 compiler option is specified. Seçenek belirtildiğinde, daha yüksek, belirtilmemiş bir değere ayarlanır /std:c++latest .It's set to a higher, unspecified value when the /std:c++latest option is specified. Aksi takdirde, makro tanımsız olur.Otherwise, the macro is undefined. _MSVC_LANGMakro ve /std (dil standardı sürümü belirt) derleyici seçenekleri Visual Studio 2015 güncelleştirme 3 ' ten başlayarak kullanılabilir.The _MSVC_LANG macro and /std (Specify Language Standard Version) compiler options are available beginning in Visual Studio 2015 Update 3.

  • __MSVC_RUNTIME_CHECKS Derleyici seçeneklerinden biri ayarlandığında 1 olarak tanımlanır /RTC .__MSVC_RUNTIME_CHECKS Defined as 1 when one of the /RTC compiler options is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _MSVC_TRADITIONAL:_MSVC_TRADITIONAL:

    • Visual Studio 2017 sürüm 15,8 ile başlayarak kullanılabilir: Önişlemci uyumluluk modu /experimental:preprocessor derleyici seçeneği ayarlandığında 0 olarak tanımlanır.Available beginning with Visual Studio 2017 version 15.8: Defined as 0 when the preprocessor conformance mode /experimental:preprocessor compiler option is set. /experimental:preprocessor-Geleneksel Önişlemci 'nin kullanımda olduğunu göstermek için varsayılan olarak veya derleyici seçeneği ayarlandığında 1 olarak tanımlanır.Defined as 1 by default, or when the /experimental:preprocessor- compiler option is set, to indicate the traditional preprocessor is in use.
    • Visual Studio 2019 sürüm 16,5 ile başlayarak kullanılabilir: Önişlemci uyumluluk modu /Zc:preprocessor derleyici seçeneği ayarlandığında 0 olarak tanımlanır.Available beginning with Visual Studio 2019 version 16.5: Defined as 0 when the preprocessor conformance mode /Zc:preprocessor compiler option is set. Varsayılan olarak 1 olarak veya /Zc:preprocessor- derleyici seçeneği ayarlandığında geleneksel Önişlemci 'nin kullanımda olduğunu belirtmek için (Aslında, /Zc:preprocessor kullanım dışı seçeneğinin yerini alır /experimental:preprocessor ).Defined as 1 by default, or when the /Zc:preprocessor- compiler option is set, to indicate the traditional preprocessor is in use (essentially, /Zc:preprocessor replaces the deprecated /experimental:preprocessor).
    #if defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL
    // Logic using the traditional preprocessor
    #else
    // Logic using cross-platform compatible preprocessor
    #endif
    
  • _MT /MD Veya /MDd (çok iş parçacıklı DLL) veya (çok /MT /MTd iş parçacıklı) belirtildiğinde 1 olarak tanımlanır._MT Defined as 1 when /MD or /MDd (Multithreaded DLL) or /MT or /MTd (Multithreaded) is specified. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _NATIVE_WCHAR_T_DEFINED/Zc:wchar_tDerleyici seçeneği ayarlandığında 1 olarak tanımlanır._NATIVE_WCHAR_T_DEFINED Defined as 1 when the /Zc:wchar_t compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _OPENMP /openmp (OpenMP 2,0 desteğini etkinleştir) derleyici seçeneği ayarlandıysa tamsayı sabit değeri 200203 olarak tanımlanır._OPENMP Defined as integer literal 200203, if the /openmp (Enable OpenMP 2.0 Support) compiler option is set. Bu değer, MSVC tarafından uygulanan OpenMP belirtiminin tarihini temsil eder.This value represents the date of the OpenMP specification implemented by MSVC. Aksi takdirde, tanımsız.Otherwise, undefined.

    // _OPENMP_dir.cpp
    // compile with: /openmp
    #include <stdio.h>
    int main() {
        printf("%d\n", _OPENMP);
    }
    
  • _PREFAST_/analyzeDerleyici seçeneği ayarlandığında 1 olarak tanımlanır._PREFAST_ Defined as 1 when the /analyze compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • __TIMESTAMP__ Geçerli kaynak dosyanın son değiştirilme tarihini ve saatini içeren bir dize sabit değeri olarak tanımlanır; Örneğin, CRT işlevinin döndürdüğü kısaltılmış, sabit uzunlukta form asctime Fri 19 Aug 13:32:58 2016 .__TIMESTAMP__ Defined as a string literal that contains the date and time of the last modification of the current source file, in the abbreviated, constant length form returned by the CRT asctime function, for example, Fri 19 Aug 13:32:58 2016. Bu makro her zaman tanımlanmıştır.This macro is always defined.

  • _VC_NODEFAULTLIB /Zl (Varsayılan kitaplık adını atla) derleyici seçeneği ayarlandığında 1 olarak tanımlanır._VC_NODEFAULTLIB Defined as 1 when the /Zl (Omit Default Library Name) compiler option is set. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _WCHAR_T_DEFINED Varsayılan /Zc:wchar_t derleyici seçeneği ayarlandığında 1 olarak tanımlanır._WCHAR_T_DEFINED Defined as 1 when the default /Zc:wchar_t compiler option is set. _WCHAR_T_DEFINEDMakro tanımlanmıştır, ancak /Zc:wchar_t- derleyici seçeneği ayarlandıysa bir değere sahip değildir ve wchar_t projenize dahil olan bir sistem üst bilgisi dosyasında tanımlanır.The _WCHAR_T_DEFINED macro is defined but has no value if the /Zc:wchar_t- compiler option is set, and wchar_t is defined in a system header file included in your project. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _WIN32 Derleme hedefi 32-bit ARM, 64-bit ARM, x86 veya x64 olduğunda 1 olarak tanımlanır._WIN32 Defined as 1 when the compilation target is 32-bit ARM, 64-bit ARM, x86, or x64. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _WIN64 Derleme hedefi 64-bit ARM veya x64 olduğunda 1 olarak tanımlanır._WIN64 Defined as 1 when the compilation target is 64-bit ARM or x64. Aksi takdirde, tanımsız.Otherwise, undefined.

  • _WINRT_DLLC++ olarak derlendiğinde ve hem /ZW (Windows çalışma zamanı derlemesi) hem de /LD ya /LDd da derleyici seçenekleri ayarlandığında 1 olarak tanımlanır._WINRT_DLL Defined as 1 when compiled as C++ and both /ZW (Windows Runtime Compilation) and /LD or /LDd compiler options are set. Aksi takdirde, tanımsız.Otherwise, undefined.

Derleyici tarafından önceden tanımlanmış ATL veya MFC kitaplık sürümünü tanımlayan bir ön işlemci makrosu yoktur.No preprocessor macros that identify the ATL or MFC library version are predefined by the compiler. ATL ve MFC kitaplık üstbilgileri bu sürüm makrolarını dahili olarak tanımlar.ATL and MFC library headers define these version macros internally. Bunlar, gerekli üst bilgi eklenmeden önce yapılan ön işlemci yönergelerinde tanımsızdır.They're undefined in preprocessor directives made before the required header is included.

  • _ATL_VER ' De <atldef.h> ATL sürüm numarasını kodlayan bir tamsayı sabit değeri olarak tanımlanmıştır._ATL_VER Defined in <atldef.h> as an integer literal that encodes the ATL version number.

  • _MFC_VER<afxver_.h>MFC sürüm numarasını kodlayan bir tamsayı sabit değeri olarak tanımlanmıştır._MFC_VER Defined in <afxver_.h> as an integer literal that encodes the MFC version number.

Ayrıca bkz.See also

Makrolar (C/C++)Macros (C/C++)
Ön işlemci işleçleriPreprocessor operators
Ön işlemci yönergeleriPreprocessor directives