在源**裡面如果這樣是定義的:
#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中我們可以通過巨集定義來控制源程式的編譯。只要在makefile中的cflags中通過選項-d來指定你於定義的巨集即可。
如:cflags += -d _yuqiang
在編譯的時候加上此選項就可以了: $(cc) $(cflags) $^ -o $@
在makefile 中
Makefile中進行巨集定義
實際上是gcc命令支援 d巨集定義,相當於c中的全域性 define gcc d name gcc d name definition makefile中可以定義變數 和巨集很像 但是是給make直譯器用的,對所編譯的檔案完全沒有作用。mstar 巨集定義方式 字串定義方式和值定義方式 cc tvo...
Makefile進行巨集定義
實際上是gcc命令支援 d巨集定義,相當於c中的全域性 define gcc d name gcc d name definition makefile中可以定義變數 和巨集很像 但是是給make直譯器用的,對所編譯的檔案完全沒有作用。在makefile中我們可以通過巨集定義來控制源程式的編譯。只要...
在n個數選取m個數中進行全排列
include using namespace std int a 100 儲存排列的數 void function int m,int k return 0 brief 從n個數選取m個數並進行全排列 select int n,int m 從n個數中選取m個數 void rank int m 對m...