我正在尝试用未定义的宏定义&两次编译源代码。因此,对于默认的宏未定义&我想通过从Makefile的参数来定义该宏,就像如何将宏定义从Makefile传递到头文件?
$(MAKE) -c $(present_dir)/new_dir -DONE_MACRO=1
,所以我用这个ONE_MACRO
在file.h
我。 这个定义如何反映并知道预处理器。这里我使用cygmake
。如何通过MACRO as argument to compiler
和cygmake工具。
file.h: -
#if ONE_MACRO
#define some_targets
#else
#define other_targets
#endif
所以这ONE_MACRO是如何从make文件中定义,即时通讯试图通过宏作为参数,如下
的Makefile: -
MY_TARGET:
$(MAKE) -C $(present_dir)/target_dir -D ONE_MACRO=1 $(MAKECMDGOALS)
你的问题不清楚。 [This](http://www.cplusplus.com/doc/tutorial/preprocessor/)显示了如何在'file.h'中使用'#ifdef'。这是否回答你的问题? – Beta
目前尚不清楚你在问什么。编译器处理'-D MACRO_DEFINE = 1'参数(通常在选项字母“D”和值“MACRO_DEFINE = 1”之间没有空格),就好像有一行代码读取了“#define MACRO_DEFINE 1” 。这是在处理任何实际代码之前设置的。这很简单,所以它可能不是你要问的 - 但不清楚你在问什么。 –
我想将一个**宏从Makefile作为参数传递给编译器**,这个宏在'file.h'.so编译时使用,我会根据宏编译两次'file.h' **根据定义和未定义**。我现在认为它很清楚。 – Kumar2080