Edw*_*ers 0 c macros stringification stringify
我需要将定义的常量转换为它们的整数值,所以我想出了这个宏(STR_TO_CONST)来做到这一点......
#define STRFY_VAL(s) #s
#define STRFY_KEY(s) STRFY_VAL(s)
#define STR_TO_CONST(s) atoi(STRFY_KEY(s))
Run Code Online (Sandbox Code Playgroud)
它有效,但我想知道它是否有任何潜在的问题,因为我从来没有遇到过这个宏,尽管我已经搜索了类似的东西.
小智 5
你从未遇到过这个问题的原因是它完全没有意义,但让我们通过例子来解释.说你有以下内容:
#define FINALANSWER 42
// ...
int x = 2 * STR_TO_CONST(FINALANSWER);
Run Code Online (Sandbox Code Playgroud)
现在,这在语义上没有区别:
int x = 2 * FINALANSWER;
Run Code Online (Sandbox Code Playgroud)
这是因为预处理器宏最终只是在您实际编译之前发生的文本替换.因此,FINALANSWER就像整数常数一样好42.
您的"解决方案",以一个不存在的问题,只是增加了开销,因为它增加了一个新的字符串常量,将代码和不必要的函数调用为好.