C macro: #if проверить равенство Есть ли способ проверить числовое равенство в макросах? Я хочу сделать что-то вроде #define choice 3 #if choice == 3 .... #endif #if choice == 4 ... #endif Поддерживаются ли макросы C для таких вещей? Ответ 1 Действительно, это должно сработать. См. http://gcc.gnu.org/onlinedocs/cpp/If.html#If Эта ссылка точна, но написана в "формате стандартов": абстрактно без примеров. Ответ 2 Другой способ написания вашего кода использует цепочечные директивы #elif: #if choice == 3 ... #elif choice == 4 ... #else #error Unsupported choice setting #endif Обратите внимание, что если choice не #defined, компилятор (препроцессор) обрабатывает его как имеющий значение 0. Ответ 3 Насколько я знаю, это должно сработать. Какой компилятор вы используете? PS: Только для информации имена имен обычно записываются в шапки! #define CHOICE 3
Ответ 1 Действительно, это должно сработать. См. http://gcc.gnu.org/onlinedocs/cpp/If.html#If Эта ссылка точна, но написана в "формате стандартов": абстрактно без примеров.
Ответ 2 Другой способ написания вашего кода использует цепочечные директивы #elif: #if choice == 3 ... #elif choice == 4 ... #else #error Unsupported choice setting #endif Обратите внимание, что если choice не #defined, компилятор (препроцессор) обрабатывает его как имеющий значение 0.
Ответ 3 Насколько я знаю, это должно сработать. Какой компилятор вы используете? PS: Только для информации имена имен обычно записываются в шапки! #define CHOICE 3