C 裡的巨集是什麼東西,c 裡面的巨集是什麼意思,請懂得的指點一下

2022-03-25 14:47:13 字數 5365 閱讀 1736

1樓:寂寞香吉士

巨集 說白了就是一種附值方式,舉個例子

普通定義變數z1 巨集定義變數z2

z1=3+5

z2=3+5

當呼叫z1時,你呼叫的是8.而呼叫z2時,你呼叫的是"3+5"這個式子..

也就是說,普通定義變數,附值的是具體的數值.而巨集是將=號右邊的式子整個附給了變數...

2樓:安心播音

巨集是一種**的替換。

如果這樣定義一個巨集:

#define max_size 78 + 5那麼在下面的語句中,編譯器會把所有的 max_size 當作 78 + 5 來用,比如下面兩段**是等效的:

1int isize1 = max_size;

int isize2 = max_size + 1;

2int isize1 = 78 + 5;

int iseze2 = 78 + 5 + 1;

巨集也可以定義成函式:

#define mul(a, b) a * b但這樣的巨集定義函式在呼叫的時候會有危險:

int ires = mul( 2 + 3, 4);

因為這行**會被編譯成:

int ires = 2 + 3 * 4;

所以,為了避免這種錯誤,我們應該寫成這樣:

#define mul(a, b) ((a) * (b))而上面的 max_size 也最好定義成:

#define max_size (78 + 5)

c++裡面的巨集是什麼意思,請懂得的指點一下

3樓:匿名使用者

巨集是預定義,就是再程式設計之前預先定義一些常量,一些命令,作為公共變數

4樓:匿名使用者

非常簡單的理解: 巨集就是用來告訴編譯器如何編譯的一些指令.

例如:#define defabc 0x0001

其實沒什麼不好理解的,當編譯器編譯到#define defabc 0x0001這裡的時候把它記了下來,然後繼續往下編譯,以後編譯的時候如果碰到了defabc,就把defabc這個巨集名替換成0x0001常量,說白了也就是起到了替換作用記住巨集就是文字替換

c++中的巨集是什麼意思?

5樓:匿名使用者

#n表示字串拼接,也就是不要把n當作變數,而是字串。

此外還有用法:##變數拼接 #@變數轉字元簡單的說就是用一個短的名字來代表一個長的字串.

例如:#define pi 3.121459程式中計算某面積時:2*3.121459*r,寫為這樣,是不是很麻煩呢,

可以定義個巨集#define pi 3.121459用2*pi*r代替。方便,不易錯!

6樓:匿名使用者

c++中的巨集跟c語言中的巨集是一個意思。完全繼承了c裡面的巨集特性,這個是為了讓c++跟c儘量的相容,但是c++裡面不提倡使用巨集,c裡面用巨集的某些場合,可以用c++裡的新特性代替,比如 inline,const, template。當然,c++裡面還是有些時候非用巨集不可。

7樓:匿名使用者

所謂的巨集就是執行程式時該語句並不執行,但是可以影響別的語句執行的語句。例如#include<......h>定義了所需的標頭檔案,如果沒有這個語句連線時可能就會出錯,但是這個語句並不實際執行。

c++中一些未定義的巨集是什麼意思?

8樓:匿名使用者

一般這些未定義巨集可以作為一些**上的註釋。

例如#define in 和 #define out

定以後,你可以宣告函式可以在不影響函式的情況下,直觀顯示那個是傳入引數,哪個是傳出引數。

另外的未定義巨集可以用來防止重複定義。

如:某標頭檔案定義**有:

#ifdef ttttt

#defin ttttt

function();

#endif

這樣當在工程裡,該標頭檔案被連續包含兩次的時候,第二次包含不會再次定義function();而導致出現重定義的問題。

如果你的程式需要同時相容32位和64位或者其他不同的平臺。

那麼也可以在程式中最初始時根據不同的環境定義一個巨集,例如64位下#define sysx64

這樣如果**中某些地方環境不同需要採用不同的方法是,可以通過#ifdef sysx64區分

9樓:孟戈大猛

編譯器預處理用的,只是告訴編譯器,至兩個巨集定義過。就像標頭檔案中都要進行巨集判斷,,如果定義過就不在編譯,如果沒定義過就編譯,#ifdef_cmath_h;#define _cmath_h;.................#endif

10樓:匿名使用者

這種就是方便人閱讀的。near和far我不太知道,給你舉個常用的:in,out

void func (in int a, out int *b)這裡就是方便人閱讀,讓人一目瞭然,a是輸入引數,b是輸出引數的。

這裡的near和far也都是一樣的作用,你結合實際意義揣度一下就行了。

c++中,巨集定義與一般的定義有什麼區別?

11樓:匿名使用者

c/c++中的巨集定義是進行符號常量定義,該定義用於定義一種符號資訊用來表示一些特殊的資訊,使源**更具有可讀性,同時,也可以提高系統的可移植性。巨集定義是在編譯時進行解釋與替換的,實際執行中的**是沒有巨集定義符號的。而一般變數或常量的定義在系統執行中,是有自己的記憶體空間,訪問許可權,和生存週期的。

巨集定義常量

#define pi 3.141

注意:1、符號常量與數值間沒有等號  2、該語句不需要以分號結尾

如:#define pi = 3.141   語法上無大問題,但應用中可能會出錯,編譯時,所有的pi會替換成『= 3.141'

#define pi 3.141 ;   語法上無大問題,但應用中可能會出錯,編譯時,所有的pi會替換成『3.141 ;』

變數定義

double pi=3.141 ; //定義一個變數pi,在記憶體中會給變數pi分配一個空間,其空間中儲存了3.141,在使用中,可以隨時改變pi值,如:

pi=3.1415926;

常量定義

const  pi=3.141 ;  //因為沒有寫型別,預設為int型別,所以,這裡的pi值實際為3

const double pi=3.141 ; //正確定義一個浮點型常量

常量與變數的差別是:常量一經定義後,就不能再修改!如果在使用中修改pi,則編譯或執行時會出錯,如vc6報錯:

error c2166: l-value specifies const object

常量與巨集定義常量的區別是: 巨集定義會在預處理階段將用define定義的內容對**中相應的識別符號進行替換(編譯期替換,編譯後巨集消失)。因此程式執行時,常量表中並沒有用define定義的常量,系統不為它分配記憶體。

const定義的常量,在程式執行時在常量表中,系統為它分配記憶體。

12樓:

要說區別其實也沒有什麼,主要都是為了使用方便,巨集定義的是一個常量,一般定義可以是常亮也可以是變數,另外一般的巨集定義是全域性的,可以任意引用,一般的定義有一定的作用域

13樓:文靜婷留

#define pi=3.141 →在編譯的時候替換 double pi=3.141→變數,可以重新賦值

這兩種,當多次用到pi時用巨集定義也就是#define pi=3.141

const double pi=3.141; //常值變數,不可以重新賦值

14樓:

#define pi=3.141 //在編譯的時候替換

//下面是在執行的時候分配單元

double pi=3.141; //變數,可以重新賦值const double pi=3.141; //常值變數,不可以重新賦值

15樓:蘋果砸向牛頓

#define pi=3.141 //在編譯的時候替換

//下面是執行時分配單元

double pi=3.141 //變數 可以重新賦值

const double pi=3.141 //常值變數 不可以重新賦值

簡單說就是double可重新賦值,而const不可重新賦值

16樓:

生存域和分配空間的區別。

#define 定義,巨集會從當前生效,一直到當前檔案結束。

且變編譯時會進行巨集擴充套件 遇到pi 會自動被編譯器替換為3.141,不會分配空間

double 和const定義遵循一般的變數生存域原則。即從當前開始到下個" }".

void test()

//k的生存域到此結束

..............................

}double 會為變數分配空間,const 會將常量分配到全域性資料區。

由於define定義沒有空間,即不能將巨集的指標賦值給變數或常量。

編譯時替換,因為將源**翻譯成可執行的檔案時,要經過編譯和連結,才能生成可執行檔案(exe),也就是在這個過程中編譯器直接將巨集擴充套件成定義的內容

c++中什麼和巨集,它有什麼功能?

17樓:永兵

巨集就是定義了之後在程式中就可以隨時使用的可以形象的說成「外號」吧,例如以下巨集定義:

#define t int;那麼在主函式中如想要定義一個整形的變數a,就可以寫成 t a;相當於int a;,親,理解了吧?

18樓:物聯網研發

c語言巨集定義 - 巨集就是一種等價替換,把**原封不動的替換到**裡

19樓:董俊錕

const 和c語言的#define,功能是定義一個符號常量

c++中,「巨集呼叫」 是什麼意思? 5

20樓:歡樂多

#define  max(a,b)  ((a)<(b)?(b):(a))

這就是巨集呼叫

21樓:匿名使用者

等同於將一段**的更簡短縮寫。而不用像封裝函式那樣浪費資源。

22樓:匿名使用者

int max(a,b)

這是函式,呼叫max其實就是找到函式指標然後呼叫#define #define max(a,b) ((a)<(b)?(b):(a))

這是巨集,事實上他只是一段**,每次呼叫max,其實只是把max實現的**貼到呼叫max的地方

EXCEL裡面的巨集是什麼?有什麼作用

巨集命令的功能主要是實現命令的重複執行 是需要寫入命令的 就是可以根據你寫入的命令在 中重複執行的功能 excel巨集是什麼意思?有什麼用呢?個人理解 巨集就是用一些vba 編寫具有一定功能的函式 過程。以作為excel功能的一個擴充套件 補充。巨集像是一個指令碼,在excel中執行的可以執行一系列...

wow裡巨集到底是什麼意思,WOW裡巨集到底是什麼意思?

所謂巨集就是命令。就是做一個命令,然後把這個命令弄成快捷鍵,放在工具欄 你按下它就施放出來了。如何做一個巨集呢?例如我現在要做一個巨集是施放潛行的同時也施放突進。如果用滑鼠或者鍵盤,這起碼要先按潛行,然後再按突進這兩個動作。現在我們將這兩個動作合併成一個。你看到聊天框右則,社交下面有個類似對話的黃色...

CAD倒角標註裡面的C1 C2是表示是什麼

c1表示1 x 45 倒角 c2表示 1 x 45 倒角。cad的全稱是指使用計算機及其圖形裝置來幫助設計師進行設計工作。在設計中,通常通過計算機對不同方案進行大量的計算 分析和比較,以確定最優方案。各種設計資訊,無論是數字 文字或圖形,都可以儲存在記憶體中或計算機外部。快速儲存和檢索 設計師通常從...