使用gcc预处理器为#include定义文件名

bit*_*its 1 c gcc compilation c-preprocessor

我想在编译时将C包含文件的名称指定为C标志.

例如

#include MY_INCLUDE_FILE
int main(int argc, const char * argv[]) {...}
Run Code Online (Sandbox Code Playgroud)

将由预处理器进行解释

#include "some_incfile.h"
int main(int argc, const char * argv[]) {...}
Run Code Online (Sandbox Code Playgroud)

做这样的事情

gcc -DMY_INCLUDE_FILE="some_incfile.h" main.c
Run Code Online (Sandbox Code Playgroud)

我试图使用字符串化运算符#来扩展,但只是遇到了错误,例如 error: expected "FILENAME" or <FILENAME>

这甚至可能吗?-D define并不是完全必要的,重要的是可以从gcc命令行设置include文件名

koa*_*alo 5

你必须逃避":

gcc -DMY_INCLUDE_FILE=\"some_incfile.h\" main.c
Run Code Online (Sandbox Code Playgroud)