Sen makroları önişlemci kullanamazsınız, ancak SomethingElse
tanımlı olup olmadığını kontrol ve farklı bir makro çağırmak istiyorsanız bu (a c99 ön işlemcisi ve Boost.Preprocessor kütüphane gerektirir) gibi, bunu başarmak olabilir:
SomethingElse
o
MACRO1
arayacak tanımlanırsa
#define PP_CHECK_N(x, n, ...) n
#define PP_CHECK(...) PP_CHECK_N(__VA_ARGS__, 0,)
//If we define SomethingElse, it has to be define like this
#define SomethingElse ~, 1,
#define Something \
BOOST_PP_IF(PP_CHECK(SomethingElse), MACRO1, MACRO2)
, aksi takdirde MACRO2
arayacak. Bu işlemin gerçekleşmesi için, SomethingElse
böyle tanımlanmalıdır: http://connect.microsoft.com/VisualStudio/feedback/details/380090/variadic-macro-replacement
:
arada
#define SomethingElse ~, 1,
, bu nedeniyle derleyici bir hata nedeniyle, Visual Studio işe yaramaz, burada bir çözüm vardır