为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
慕码人8056858 2019-11-30 15:07:25
我必须在C中执行类似的操作。仅当使用char时,它才有效,但是我需要一个字符串。我怎样才能做到这一点?#define USER "jack" // jack or queen#if USER == "jack"#define USER_VS "queen"#elif USER == "queen"#define USER_VS "jack"#endif
查看完整描述

3 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

我不认为有一种方法可以完全在预处理程序指令中进行可变长度字符串比较。您也许可以执行以下操作:


#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代码。


查看完整回答
反对 回复 2019-11-30
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

以下对我有用。允许显示为符号宏值比较的内容。#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


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 1030 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信