gpt4 book ai didi

c++ - 如何定义和测试字符串值的宏?

转载 作者:行者123 更新时间:2023-11-30 18:46:01 24 4
gpt4 key购买 nike

如果我定义宏一个数字并在 if 条件中使用它,它就会按照我想要的方式工作。但当我将它定义为字符串时则不然(我不确定它是否是字符串):

#define X surjit

#if(X == prachee)
#error "you're wrong"
#elif(X == manish)
#error "you're wrong again"
#elif(X == surjit)
#error "now you got it"
#endif

我原以为它会打印现在你明白了。但它打印出你错了
我什至尝试将其明确定义为字符串

#define X "surjit"  

但这会引发如下错误

error: token ""surjit"" is not valid in preprocessor expressions

最佳答案

简短的回答是:你不能。

预处理器仅理解#if中的整数表达式。这就是为什么 "surjit" 之类的字符串文字会导致错误。

未定义的标识符在 #if/#elif 中被替换为 0 进行计算,这就是为什么 surjit == Prachee 变为 0 == 0 并评估为 true。

一种可能的解决方法是为这些名称提供不同的整数值:

#define prachee 1
#define manish 2
#define surjit 3

关于c++ - 如何定义和测试字符串值的宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53236369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com