#include指令中的宏替换

Yve*_*ust 10 include stringification c-preprocessor

我想使用一个#include带有文件名的指令,该指令作为外部定义的宏传递.

例如

#include #FILE".h"
Run Code Online (Sandbox Code Playgroud)

where FILE将被定义为字符串MyFile(不带引号),从而导致

#include "MyFile.h"
Run Code Online (Sandbox Code Playgroud)

此处不能使用字符串化运算符#,因为符号FILE不是宏参数.我尝试过其他方法,但无济于事.

你看到了解决方案吗?

Col*_*mbo 14

字符串文字连接在#include-directives解决后发生两个翻译阶段; 你的方法无法奏效.相反,尝试一些类似的东西

#define STRINGIZE_(a) #a
#define STRINGIZE(a) STRINGIZE_(a)

#define MYFILE stdio
#include STRINGIZE(MYFILE.h)

int main() {
    printf("asdf");
}
Run Code Online (Sandbox Code Playgroud)

演示.