M/在Makefile中進行巨集定義-D
阿新 • • 發佈:2019-02-09
在原始碼裡面如果這樣是定義的:
#ifdef MACRONAME
//可選程式碼
#endif
那在makefile裡面
gcc -D MACRONAME=MACRODEF
或者
gcc -D MACRONAME
這樣就定義了預處理巨集,編譯的時候可選程式碼就會被編譯進去了。
對於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