是否可以使用字符串检查预处理器定义?

时间:2019-05-24 04:41:07

标签: c++ preprocessor

我想知道是否可以使用字符串检查预处理器定义的变量是否存在。

例如,

#define TARGET_ANDROID

if (checkIfDefineExists("TARGET_ANDROID"))
{
    cout << "It is defined\n";
}

然后结果应打印It is defined

据我所知这是不可能的,但是我想知道是否有任何解决方法。

2 个答案:

答案 0 :(得分:2)

  

据我所知

正确。

  

但是我想知道是否有任何解决方法。

不。但是,如果您的目标是找出要编译程序的目标,则可以执行以下操作:

#if defined(TARGET_ANDROID)
#  define TARGET "ANDROID"
#elif defined(TARGET_IOS)
#  define TARGET "IOS"
#endif

if (checkIfTargetIs("ANDROID")) {
    cout << "It is ANDROID\n";
}

答案 1 :(得分:1)

询问是否可能甚至没有意义,因为尚未定义“它”。

#define TARGET_ANDROID
if 
#undef TARGET_ANDROID
 (
#define TARGET_ANDROID
  checkIfDefineExists
#undef TARGET_ANDROID
   (
#define TARGET_ANDROID
     "TARGET_ANDROID"
#undef TARGET_ANDROID
    )
#define TARGET_ANDROID
  )
#undef TARGET_ANDROID
{ 
cout << "It is defined\n";
}

您希望程序打印什么,为什么?