[英]How to include makefile variable in include preprocessor directive
我想包含基于 makefile 变量的 header 文件。
MakeFile
DISC := left
将此变量传递给 C 程序,如下所示:
CFLAGS += -DNAME=\"$(DISC)\"
在 main.c 中,需要包含 header 以根据 makefile 变量正确光盘。
有没有可能做
#include "NAME_header.h"
(其中 NAME 是从 makefile 传递的)
我收到编译错误错误:未找到 NAME_header.h。
这真的有可能以这种方式包含 header 文件吗?
一个可行的解决方案:
Makefile:
DISC := left
CFLAGS += -DNAME=$(DISC)
C 或 C++ 来源:
#define STR(s) STR2(s)
#define STR2(s) #s
#define EXPAND(s) s
#include STR(EXPAND(NAME)_header.h)
替代解决方案; 考虑使用代理文件。 请参阅下面有关混合宏和#include 的更多详细信息。
在Makefile中,创建v_header.h
echo '#include "${DISC}_header.h"' > v_header.h
可以包含哪些
#include "v_header.h"
目前,cpp 语法不允许使用宏作为“#include”语句的一部分。 它必须是 '"path.h"' 或 ''。 “stringifaction”运算符('#' 和 '##')不会针对预处理器指令进行处理(以 '#' 开头的行)
// Not working
#include NAME
#include #NAME
#include "#NAME"
#include "##NAME"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.