Pal*_*han 3 c macros stringification c-preprocessor
为了纠正错别字,并添加我忘记提及的问题,这里是宏:
#define SUFFIX .new
#define STR(x) #x
#define GENFILE(name,suff) STR(timings/name suff)
GENFILE(test1, SUFFIX)
Run Code Online (Sandbox Code Playgroud)
上面的代码生成timings/test1 .new,如果我没有那个额外的空间,我会得到我想要的,我该如何绕过它?
更简单:说吧#define GENFILE(name) STR(timings/name).
斜杠将预处理器标记分开,因此GENFILE(test1)变为STR(timings/test1)整体字符串化.
(现在你可以说#include GENFILE(myheader).)
或者,您可以说 #define GENFILE(name) STR(timings/) #name,但这将导致两个连接的字符串 "timings/" "test1".请注意非常漂亮,并且@hvd正确地观察到,字符串连接不能在#include指令内使用.