一、GCC編譯器中使用:
-D macro=string,等價於在頭文件中定義:#define macro string。
例如:-D TRUE=true,等價於:#define TRUE true
-D macro,等價於在頭文件中定義:#define macro 1,實際上也達到了定義:#define macro的目的。
例如:-D Linux,等價於:#define LINUX 1(與#define LINUX作用類似)。
--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
運行: ./test
輸出: Hello p2
2.編譯: gcc -o test test.c -D p1
運行: ./test
輸出: Hello p1
二、在Makefile中進行宏定義-D
在Makefile中我們可以通過宏定義來控制源程序的編譯。只要在Makefile中的CFLAGS中通過選項-D來指定你於定義的宏即可。
如:
CFLAGS += -D _YUQIANG
在編譯的時候加上此選項就可以了: $(CC) $(CFLAGS) $^ -o $@
DEFINES += -D BVS_DIRECTION=$(BVS_DIRECTION) \ -D BVS_LAYOUT=$(BVS_LAYOUT) \ -D $(BVS_TYPE)\