Можно ли проверить определения препроцессора со строкой - PullRequest
0 голосов
/ 24 мая 2019

Интересно, можно ли проверить, существует ли переменная, определенная препроцессором, или нет, используя строку.

Например,

#define TARGET_ANDROID

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

Тогда результат должен вывести It is defined.

Насколько я знаю, это невозможно, но мне интересно, есть ли какая-то работа вокруг этого.

Ответы [ 2 ]

2 голосов
/ 24 мая 2019

Насколько я знаю, это невозможно

Correct.

но мне интересно, есть ли какая-то работа вокруг этого.

Нет. Но если ваша цель - выяснить, для какой цели была скомпилирована ваша программа, вы можете сделать:

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

if (checkIfTargetIs("ANDROID")) {
    cout << "It is ANDROID\n";
}
1 голос
/ 24 мая 2019

Даже не имеет смысла спрашивать, возможно ли это, потому что «оно» не было определено.

#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";
}

Что вы хотите, чтобы ваша программа печатала и почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...