猿问

如何在C条件预处理器指令中比较字符串

我必须在C中执行类似的操作。仅当使用char时,它才有效,但是我需要一个字符串。我怎样才能做到这一点?


#define USER "jack" // jack or queen


#if USER == "jack"

#define USER_VS "queen"

#elif USER == "queen"

#define USER_VS "jack"

#endif


慕码人8056858
浏览 1031回答 3
3回答

侃侃尔雅

我不认为有一种方法可以完全在预处理程序指令中进行可变长度字符串比较。您也许可以执行以下操作:#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代码。

肥皂起泡泡

以下对我有用。允许显示为符号宏值比较的内容。#error xxx只是看编译器的实际作用。用#define cat(a,b)a ## b替换cat定义会破坏事情。#define cat(a,...) cat_impl(a, __VA_ARGS__)#define cat_impl(a,...) a ## __VA_ARGS__#define xUSER_jack 0#define xUSER_queen 1#define USER_VAL cat(xUSER_,USER)#define USER jack // jack or queen#if USER_VAL==xUSER_jack  #error USER=jack  #define USER_VS "queen"#elif USER_VAL==xUSER_queen  #error USER=queen  #define USER_VS "jack"#endif
随时随地看视频慕课网APP
我要回答