22 Kasım 2018 Perşembe

__cplusplus macrosu

Macro Değeri
Açıklaması şöyle.
According to the standard, the __cplusplus macro must be defined, the exact definition depends on the C++ standard being used but it will not be zero.
Macronun değerini görmek için şöyle yaparız.
std::cout << __cplusplus << std::endl;
Şöyle yaparız.
std::cout << (unsigned int)__cplusplus << std::endl;
Çıktı olarak şunun gibi bir değer alırız.
201402
Ancak macro, her derleyici tarafından farklı bir anlam için kullanılmış. C++ derleyicisinin sürümünü anlamak için kullanıyorsak portable kod beklememek lazım. Örneğin Visual Studio 2012 macronun değerini halen 199711L olarak gösteriyor.

Eğer portable olmasını beklemeden C++ derleyicisinin sürümünü anlamak istersek şöyle yaparız.
#if __cplusplus > 201100L
#  define MYNULL nullptr
#else
#  define MYNULL NULL
#endif
Şöyle yaparız.
#if __cplusplus >= 201402L
[[deprecated]]
#endif
Örnek
Şöyle yaparız
#ifdef __cplusplus
extern "C" {...}
#endif
Örnek
Şöyle yaparız.
#if __cplusplus < 201103L
#error This source must be compiled as C++11 or later
#endif



Hiç yorum yok:

Yorum Gönder