【问题标题】:Preprocessor macro defined in .config file is not visible in c file.config 文件中定义的预处理器宏在 c 文件中不可见
【发布时间】:2017-10-07 13:06:13
【问题描述】:

我在 .config 文件中有如下预处理器宏

CONFIG_IDENTIFIER=y  

那么,Makefile 内容如下

-include .config
OBJ += ./src/myfile.o
....
myapp: $(OBJS)
    $(CC) $(LDFLAGS) -o myapp $(OBJS)
    @$(E) "  LD " $@

然后在 ./src/myfile.c 文件中,我尝试使用下面的 perprocessor 宏,

#ifdef CONFIG_IDENTIFIER
.... /* Compiler does not execute in here */
....
#endif  

但无法在 ./src/myfile.c 文件中获取预处理器宏定义。有什么帮助吗?

【问题讨论】:

  • 如果它是一个宏,那么它不会被赋予这样的值:#define CONFIG_IDENTIFIER

标签: c makefile macros preprocessor


【解决方案1】:

我在 .config 文件中有如下预处理器宏

CONFIG_IDENTIFIER=y  

这定义了 Makefile 的本地变量。它确实没有定义了一个 C 预处理器宏。

要使其成为 C 预处理器宏,您可以像这样调整 Makefile:

-include .config
CFLAGS += -DCONFIG_IDENTIFIER=$(CONFIG_IDENTIFIER)
....

【讨论】:

    【解决方案2】:

    CONFIG_IDENTIFIER 不是预处理器宏,它是一个 make 变量,就像 OBJS

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 2011-01-26
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-12-13
      相关资源
      最近更新 更多