一、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)\