M 在Makefile中進行巨集定義 D

2021-07-30 11:30:31 字數 990 閱讀 7549

在源**裡面如果這樣是定義的:

#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...