2017-10-07 37 views
1

我有预处理器宏在config文件如下预处理器宏是不是在C文件可见

CONFIG_IDENTIFIER=y 

然后,生成文件内容如下

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

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

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

但是无法获得预处理器宏定义在./src/myfile.c文件中。对此有何帮助?

+0

如果它是一个宏则没有分配这样一个值:'#定义CONFIG_IDENTIFIER'。 – Raindrop7

回答

0

我在config文件预处理宏如下

CONFIG_IDENTIFIER=y 

这定义了一个局部变量生成文件。它确定了而不是定义了C预处理宏。

使之成为C-预处理宏,你可以调整的Makefile这样的:

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

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