2017-10-07 82 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一樣。