Неверная директива предварительной обработки для #elseifdef в Xcode - PullRequest
17 голосов
/ 27 февраля 2012

Почему:

 #ifdef SOME_TARGET_FLAG     
      <some code here>
    #elseifdef SOME_ANOTHER_TARGET_FLAG
      <some another code here>
    #endif

выдает «Ошибка директивы предварительной обработки»: ошибка компиляции препроцессора?

SOME_TARGET_FLAG и SOME_ANOTHER_TARGET_FLAG - это просто некоторые «другие C-флаги», определенные в настройках целевой сборки (-D<FLAG_NAME> шаблон).

Директива # elseifdef не поддерживается Xcode?

Ответы [ 2 ]

35 голосов
/ 27 февраля 2012

Директива #elseifdef не поддерживается Xcode?

Это не так. Используйте это вместо:

#elif defined(SOME_ANOTHER_TARGET_FLAG)
2 голосов
/ 27 февраля 2012

Не поддерживается, как указано в сообщении об ошибке.См. «Препроцессор C» - https://developer.apple.com/library/mac/#documentation/DeveloperTools/gcc-4.2.1/cpp/index.html#//apple_ref/doc/uid/TP40007092 (условная компиляция).

...