我想使用#include
指令,其文件名作为外部定义的宏传递。
E.g。
#include #FILE".h"
其中FILE
将被定义为字符串MyFile
(不带引号),导致
#include "MyFile.h"
此处不能使用字符串化运算符#,因为符号FILE
不是宏参数。我尝试了其他方法,但没有用。
你看到了解决方案吗?
答案 0 :(得分:13)
字符串文字连接在#include
之后发生两个翻译阶段 - 指令被解析;你的方法无法奏效。相反,尝试一下
#define STRINGIZE_(a) #a
#define STRINGIZE(a) STRINGIZE_(a)
#define MYFILE stdio
#include STRINGIZE(MYFILE.h)
int main() {
printf("asdf");
}