#include指令中的宏替换

前端之家收集整理的这篇文章主要介绍了#include指令中的宏替换前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用带有外部定义的宏传递的文件名的#include指令.

例如.

#include #FILE".h"

其中FILE将被定义为字符串MyFile(不带引号),导致

#include "MyFile.h"

字符串运算符#不能在这里用作符号FILE不是宏参数.我已经尝试过其他方法,无济于事.

你看到一个解决方案吗?

解决方法

字符串字面连接发生在#include-directives解析后的两个翻译阶段;你的方法不行.相反,请尝试沿着这一行
#define STRINGIZE_(a) #a
#define STRINGIZE(a) STRINGIZE_(a)

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

int main() {
    printf("asdf");
}

Demo.

原文链接:https://www.f2er.com/c/114823.html

猜你在找的C&C++相关文章