C макрос: #if проверяют на равенство

Существует ли способ сделать проверку на числовое равенство в макросах?

Я хочу сделать что-то как

#define choice 3

#if choice == 3
  ....
#endif

#if choice == 4
 ...
#endif

C макросы имеет поддержку вещей как это?

24
задан wallyk 25 May 2014 в 15:08
поделиться

3 ответа

Действительно, это должно Работа. См. http://gcc.gnu.org/onlinedocs/cpp/If.html#If

Эта ссылка точна, но написана в "стандартном формате": абстрактно без примеров.

25
ответ дан 28 November 2019 в 22:48
поделиться

Другой способ написания кода использует цепочку #elif директив:

#if choice == 3
  ...
#elif choice == 4
  ...
#else
  #error Unsupported choice setting
#endif

Обратите внимание, что если choice не является #defined, компилятор (препроцессор) рассматривает его как значение 0.

29
ответ дан 28 November 2019 в 22:48
поделиться

Насколько я знаю, это должно сработать. Какой компилятор вы используете?

PS: Для информации, имена определений обычно пишутся заглавными буквами!

#define ВЫБОР 3

5
ответ дан 28 November 2019 в 22:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: