在源**裡面如果這樣是定義的:
#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
#include
main()
1. 編譯: gcc -o test test.c
執行: ./test
輸出: hello p2
2. 編譯: gcc -o test test.c -d p1
執行: ./test
輸出: hello p1
Makefile進行巨集定義
實際上是gcc命令支援 d巨集定義,相當於c中的全域性 define gcc d name gcc d name definition makefile中可以定義變數 和巨集很像 但是是給make直譯器用的,對所編譯的檔案完全沒有作用。在makefile中我們可以通過巨集定義來控制源程式的編譯。只要...
Makefile中進行巨集定義
實際上是gcc命令支援 d巨集定義,相當於c中的全域性 define gcc d name gcc d name definition makefile中可以定義變數 和巨集很像 但是是給make直譯器用的,對所編譯的檔案完全沒有作用。mstar 巨集定義方式 字串定義方式和值定義方式 cc tvo...
M 在Makefile中進行巨集定義 D
在源 裡面如果這樣是定義的 ifdef macroname 可選 endif 那在makefile裡面 gcc d macroname macrodef 或者gcc d macroname 這樣就定義了預處理巨集,編譯的時候可選 就會被編譯進去了。對於gcc編譯器,有如下選項 d macro str...