Я должен сделать что-то вроде этого в C. Это работает, только если я использую символ, но мне нужна строка. Как я могу сделать это?
#define USER "jack" // jack or queen
#if USER == "jack"
#define USER_VS "queen"
#elif USER == "queen"
#define USER_VS "jack"
#endif
Я не думаю, что есть способ полностью выполнять сравнение строк переменной длины в директивах препроцессора. Возможно, вы могли бы сделать следующее:
#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.
Используйте числовые значения вместо строк.
Наконец, чтобы преобразовать константы JACK или QUEEN в строку, используйте операторы преобразования строки (и / или токенизации).