繁体   English   中英

如何在包含预处理器指令中包含 makefile 变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM