Как сравнить строки в условных директивах препроцессору C

Я должен сделать что-то вроде этого в C. Это работает, только если я использую символ, но мне нужна строка. Как я могу сделать это?

#define USER "jack" // jack or queen

#if USER == "jack"
#define USER_VS "queen"
#elif USER == "queen"
#define USER_VS "jack"
#endif
79
задан Chris Martin 22 October 2017 в 20:06
поделиться

2 ответа

Я не думаю, что есть способ полностью выполнять сравнение строк переменной длины в директивах препроцессора. Возможно, вы могли бы сделать следующее:

#define USER_JACK 1
#define USER_QUEEN 2

#define USER USER_JACK 

#if USER == USER_JACK
#define USER_VS USER_QUEEN
#elif USER == USER_QUEEN
#define USER_VS USER_JACK
#endif

Или вы могли бы немного реорганизовать код и вместо этого использовать код C.

61
ответ дан 24 November 2019 в 10:19
поделиться

Используйте числовые значения вместо строк.

Наконец, чтобы преобразовать константы JACK или QUEEN в строку, используйте операторы преобразования строки (и / или токенизации).

7
ответ дан 24 November 2019 в 10:19
поделиться
Другие вопросы по тегам:

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