使用预处理器语法获取const char

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,如果我没有那个额外的空间,我会得到我想要的,我该如何绕过它?

Ker*_* SB 6

更简单:说吧#define GENFILE(name) STR(timings/name).

斜杠将预处理器标记分开,因此GENFILE(test1)变为STR(timings/test1)整体字符串化.

(现在你可以说#include GENFILE(myheader).)


或者,您可以说 #define GENFILE(name) STR(timings/) #name,但这将导致两个连接的字符串 "timings/" "test1".请注意非常漂亮,并且@hvd正确地观察到,字符串连接不能在#include指令内使用.