一、GCC編譯器中使用:
-D macro=string,等價(jià)于在頭文件中定義:#define macro string。
例如:-D TRUE=true,等價(jià)于:#define TRUE true
-D macro,等價(jià)于在頭文件中定義:#define macro 1,實(shí)際上也達(dá)到了定義:#define macro的目的。
例如:-D Linux,等價(jià)于:#define LINUX 1(與#define LINUX作用類(lèi)似)。
--define-macro macro=string與-D macro=string作用相同。
如:TEST.C 文件
#include <stdio.h>#include <stdlib.h>main() { #ifdef p1 printf("Hello p1");#else printf("Hello p2");#endif }
1.編譯: gcc -o test test.c
運(yùn)行: ./test
輸出: Hello p2
2.編譯: gcc -o test test.c -D p1
運(yùn)行: ./test
輸出: Hello p1
二、在Makefile中進(jìn)行宏定義-D
在Makefile中我們可以通過(guò)宏定義來(lái)控制源程序的編譯。只要在Makefile中的CFLAGS中通過(guò)選項(xiàng)-D來(lái)指定你于定義的宏即可。
如:
CFLAGS += -D _YUQIANG
在編譯的時(shí)候加上此選項(xiàng)就可以了: $(CC) $(CFLAGS) $^ -o $@
DEFINES += -D BVS_DIRECTION=$(BVS_DIRECTION) \ -D BVS_LAYOUT=$(BVS_LAYOUT) \ -D $(BVS_TYPE)\