關於巨集定義的問題

2023-01-02 11:40:31 字數 1266 閱讀 7279

1樓:渾靜秀

1全部第一點:

巨集比常規函式複雜,表現最明顯的就是括號的應用~

第二點:

編譯器對巨集的格式要求不一,有的需要一個巨集 必須在同一行上,有的不需要,給**移植帶來麻煩。

第三點:

巨集不檢查巨集中的變數型別,這與函式不同。可以是優點也可能是缺點。

第四點:

巨集編譯以後將產生內聯**,。。。就是。。。。哎。。不好說。來個**說明一下

#define 巨集x(a,b) //實現a+b

main 中計算了50回 a+b的 運算 如:

for (i=0; i<50; i++)

這樣在編譯以後 **變為

x(i,i+1);

i++;

x(i,i+1);

i++;

...x(i,i+1);

i++;

共有50個。

而函式不同

就一個函式**

void x(int a, int b)

在main的for裡 反覆的呼叫這個函式

也就是goto 的意思。

明白了嗎?

巨集編譯以後比函式要多佔用空間,但是沒有如goto這樣的跳轉語句佔用cpu

就是空間大了 時間小了

如果 這個程式需要快速的執行而不考慮儲存空間的問題 在沒有不必要的麻煩情況下 可以儘量用巨集。 如atm機

反過來 你也應該知道了吧

函式比巨集 佔用更小的儲存空間 但是代價是站用cpu。。

再有。。。。暫時想不起來了。。

反正我的經驗是 沒有必要的時候儘量少用巨集。。

但是碰到儲存空間小的可憐的時候 就要考慮了。我是做嵌入式程式設計的這樣的問題遇到過 不過不在迴圈體裡 也沒看出來多大的差別~~

共你參考吧~

2樓:標苦運先

巨集定義分兩部分:

1。_ctype[(c) + 1]

在ctype.h中有宣告

extern unsigned short _ctype;

表示_ctype是個unsigned short型別的全域性陣列變數;該全域性變數用於編譯器內部對程式原始碼中的字符集(ascii碼的子集)進行類別編號

2。_is_dig | _is_upp | _is_low等等用來過濾出"指定位"的掩碼,通過位運算&獲取制定位是否為1,結合1中對字符集的分類,共同用來判斷某個字元是否屬於特定類別(例如:數字,字母,空格。。。)

3樓:匿名使用者

巨集效率高,沒有函式呼叫的開銷

c語言巨集定義字串問題,C語言巨集定義字串問題

用拼接符可以做到 define string arg aaaaaaa arg bbbbbbbbbb 但arg必須是個常量,不能是變數 c語言,將數字和字串拼成一個字串。用巨集來做,用api誰都會 巨集定義字串拼接可以使用巨集運算 即 define strcat x,y x y。運算子可以將兩個記號版...

關於WOW巨集設定的問題

y 是喊 use 是使用 cast 是施放 然後字母后面空格,空格後面寫上要施放的法術,或者使用的物品詳細的給你解釋不清楚,你可以專門上專業網看看 對於魔獸的巨集,有兩種,一種是從論壇裡面複製,因為有些巨集製作相當的麻煩,所以你直接複製貼上便可使用,還有一種就是自己做,做自己常用的巨集,像上面你說的...

關於獵人巨集製作的問題

施放 自動射擊 施放 沉默射擊 施放 殺戮命令 castsequence reset 8 瞄準射擊,自動射擊,自動射擊,自動射擊,自動射擊,自動射擊,自動射擊,自動射擊,自動射擊,自動射擊 castsequence reset 10 奇美拉射擊,自動射擊,自動射擊,自動射擊,自動射擊,自動射擊,自動...