這個巨集定義的函式是什麼意思,這個巨集定義的函式是什麼意思?

2021-05-19 06:01:35 字數 6752 閱讀 4970

1樓:匿名使用者

很難詳細..因為f是個指標..其型別應該是個自定義類

你必須知道f的型別的宣告或註釋..才知道什麼意思

2樓:匿名使用者

就是用這個工具自己編寫一些程式,批處理你的word,excel中的資料,減少你敲擊鍵盤的數量。當然這個功能一般不要用,除非你非常懂~~否則你的word,excel中的資料可鞥會出現不可知的錯誤~~~~

下面是最權威的解釋:

1.不帶引數的巨集定義:

巨集定義又稱為巨集代換、巨集替換,簡稱「巨集」。

格式:#define 識別符號 字串

其中的識別符號就是所謂的符號常量,也稱為「巨集名」。

預處理(預編譯)工作也叫做巨集:將巨集名替換為字串。

掌握"巨集"概念的關鍵是「換」。一切以換為前提、做任何事情之前先要換,準確理解之前就要「換」。

即在對相關命令或語句的含義和功能作具體分析之前就要換:

例:#define pi 3.1415926

把程式中出現的pi全部換成3.1415926

說明:(1)巨集名一般用大寫

(2)使用巨集可提高程式的通用性和易讀性,減少不一致性,減少輸入錯誤和便於修改。例如:陣列大小常用巨集定義

(3)預處理是在編譯之前的處理,而編譯工作的任務之一就是語法檢查,預處理不做語法檢查。

(4)巨集定義末尾不加分號;

(5)巨集定義寫在函式的花括號外邊,作用域為其後的程式,通常在檔案的最開頭。

(6)可以用#undef命令終止巨集定義的作用域

(7)巨集定義可以巢狀

(8)字串" "中永遠不包含巨集

(9)巨集定義不分配記憶體,變數定義分配記憶體。

2.帶引數的巨集:

除了一般的字串替換,還要做引數代換

格式:#define 巨集名(參數列) 字串

例如:#define s(a,b) a*b

area=s(3,2);第一步被換為area=a*b; ,第二步被換為area=3*2;

類似於函式呼叫,有一個啞實結合的過程:

(1)實參如果是表示式容易出問題

#define s(r) r*r

area=s(a+b);第一步換為area=r*r;,第二步被換為area=a+b*a+b;

正確的巨集定義是#define s(r) (r)*(r)

(2)巨集名和引數的括號間不能有空格

(3)巨集替換隻作替換,不做計算,不做表示式求解

(4)函式呼叫在編譯後程式執行時進行,並且分配記憶體。巨集替換在編譯前進行,不分配記憶體

(5)巨集的啞實結合不存在型別,也沒有型別轉換。

(6)函式只有一個返回值,利用巨集則可以設法得到多個值

(7)巨集使源程式變長,函式呼叫不會

(8)巨集不佔執行時間,只佔編譯時間,函式呼叫佔執行時間(分配記憶體、保留現場、值傳遞、返回值)

3樓:戊婧棟合樂

(volatile

uint16

*)0x41ff----轉成指向一個uint16型別的指標(*((volatile

uint16

*)0x41ff))----前面加個*就是指標的表示了一般用在暫存器地址為0x41ff定義上,volatile這個是亮點,注意下

什麼是巨集定義?

4樓:薔祀

巨集定義是高階語言編譯器提供的常用語法,其目的是利用某一識別符號標識某個文字字串。在編寫程式時,如果程式中反覆地使用某個資料或某段程式片段,就可以考慮將這個資料或程式片段定義為巨集,然後每個出現該資料或程式片段的地方用巨集名替代

選擇巨集定義來做的好處是程式簡潔,可讀性好,而且當需要修改這些相同的程式片段時,只要修改巨集定義中的字串即可,不需要修改多處。

擴充套件資料

參巨集定義中#的用法:

#define str(str) #str

#用於把巨集定義中的引數兩端加上字串的""

比如,這裡str(my#name)會被替換成"my#name",一般由任意字元都可以做形參,但以下情況會出錯:

str())這樣,編譯器不會把")"當成str()的引數。str(,)同上,編譯器不會把","當成str的引數。str(a,b)如果實參過多,則編譯器會把多餘的引數捨去。

(vc++2008為例)str((a,b))會被解讀為實參為:(a,b),而不是被解讀為兩個實參,第一個是(a第二個是b)。

5樓:桑禮潮風

通俗的講就是對你常用的值或公式進行事先的定義編譯,以優化**吧~還是看下下面的列子,體會下吧~

表示式:

#define

識別符號字串

比如:#define

pi3.1415926

它的意思就是把3.1415926賦值給pi又比如:

#define

a(x,y)

x*y它的意思就是在主函式中若

x=2,y=3,則a(x,y)=6,

因為它巨集定義了a(x,y)=x*y。

記住,如果巨集定義了,它的值(在整個程式中)是不會變的,除非你對它再一次巨集定義,但這樣會降低程式的可讀性,所以儘量不要重複定義相同的內容。

6樓:忘我之魚

1.不帶引數的巨集定義:

巨集定義又稱為巨集代換、巨集替換,簡稱「巨集」。

格式:#define 識別符號

字串其中的識別符號就是所謂的符號常量,也稱為「巨集名」。

預處理(預編譯)工作也叫做巨集:將巨集名替換為字串。

掌握"巨集"概念的關鍵是「換」。一切以換為前提、做任何事情之前先要換,準確理解之前就要「換」。

即在對相關命令或語句的含義和功能作具體分析之前就要換:

例:#define pi 3.1415926

把程式中出現的pi全部換成3.1415926

說明:(1)巨集名一般用大寫

(2)使用巨集可提高程式的通用性和易讀性,減少不一致性,減少輸入錯誤和便於修改。例如:陣列大小常用巨集定義

(3)預處理是在編譯之前的處理,而編譯工作的任務之一就是語法檢查,預處理不做語法檢查。

(4)巨集定義末尾不加分號;

(5)巨集定義寫在函式的花括號外邊,作用域為其後的程式,通常在檔案的最開頭。

(6)可以用#undef命令終止巨集定義的作用域

(7)巨集定義可以巢狀

(8)字串" "中永遠不包含巨集

(9)巨集定義不分配記憶體,變數定義分配記憶體。

2.帶引數的巨集:

除了一般的字串替換,還要做引數代換

格式:#define 巨集名(參數列) 字串

例如:#define s(a,b) a*b

area=s(3,2);第一步被換為area=a*b; ,第二步被換為area=3*2;

類似於函式呼叫,有一個啞實結合的過程:

(1)實參如果是表示式容易出問題

#define s(r) r*r

area=s(a+b);第一步換為area=r*r;,第二步被換為area=a+b*a+b;

正確的巨集定義是#define s(r) (r)*(r)

(2)巨集名和引數的括號間不能有空格

(3)巨集替換隻作替換,不做計算,不做表示式求解

(4)函式呼叫在編譯後程式執行時進行,並且分配記憶體。巨集替換在編譯前進行,不分配記憶體

(5)巨集的啞實結合不存在型別,也沒有型別轉換。

(6)函式只有一個返回值,利用巨集則可以設法得到多個值

(7)巨集使源程式變長,函式呼叫不會

(8)巨集不佔執行時間,只佔編譯時間,函式呼叫佔執行時間(分配記憶體、保留現場、值傳遞、返回值)

7樓:盍清竹魏雀

一個程式由多個檔案組成,特別是有多個標頭檔案組成時一定要用巨集,目的是避免互相嵌入造成重複定義,給編譯器一個清晰的程式結構。

例如所有的mfc

vc++

的標頭檔案都有這個巨集

#if!defined(afx_....

#define

afx_....

...#endif

呼叫動態聯結庫要用巨集

#pragma....

定義替代字元要用巨集,例如

#define

shuzu_daxiao

2000

...float

a[shuzu_daxiao],b[shuzu_daxiao];

編譯前編譯器會用2000替代所有字元shuzu_daxiao。

如果是一般變數,就不能用巨集,例如:

inti,j,k;

void

main(int

n,char

*argv)

這是標準的c的主程式寫法。

用void

表示主程式執行終了沒有返回值送回作業系統。

如果是int

main(int

n,char

*argv)

主程式執行終了有返回值送回作業系統,主程式內要有return語句。

網上找的希望對你有幫助

8樓:壹陸南柒陸北

巨集定義,別名巨集代換,是c提供的三種預處理功能的其中一種,這三種預處理包括:巨集定義、檔案包含、條件編譯。

9樓:匿名使用者

c語言源程式中,一個字串可能在程式中多次出現。這時可以將該字串用一個特定的識別符號代替,這種表示方法,稱為巨集定義。它包括無參巨集定義和帶參巨集定義兩類。

10樓:匿名使用者

用#define 定義的替換巨集函式

c語言中什麼是巨集定義,它是幹什麼的?

11樓:蜻蜓點水

就是強制性的字元替換,比如說你要用a代表6,那麼後面所有是a的地方都是用字元6替換掉就可以了,這個是不進行運算只是替換

比如define a (a+b)

那麼後面所有a的地方都可以全部替換成(a+b)但是你不能用a+b的結果

12樓:

巨集定義又稱為預定義,它有很多功能,我也剛剛瞭解一點。首先他能定義常量,這樣我們可以集中統一修改。其次,它還能定義函式(預定義)。總之,熟悉它會很方便。

c語言中的巨集定義是什麼意思?可不可以詳細的解釋一下~

13樓:小馬千紙鶴

不用解釋巨集定義,直接講21題你就明白了,#define x 10-4 其中x代表的是後面的值或者式子,比如21題 x代表10-4,但是不能認為x=4哦,6*10-4=60-4=56 故答案為56

14樓:天雨下凡

#define x 10-4

x是識別符號,10-4是替換值,把程式中出現x的地方替換成10-4,雙引號中不替換,需要注意的地方是,進行運算時,10-4不是一個整體,如本題中,

6*x相當於6*10-4=60-4=56,所以輸出結果是56

c語言在函式內定義巨集有什麼壞處嗎?

15樓:匿名使用者

巨集定義巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括:巨集定義、檔案包含、條件編譯

編輯本段1.不帶引數的巨集定義:

巨集定義又稱為巨集代換、巨集替換,簡稱「巨集」。

格式:#define 識別符號 字串

其中的識別符號就是所謂的符號常量,也稱為「巨集名」。

預處理(預編譯)工作也叫做巨集:將巨集名替換為字串。

掌握"巨集"概念的關鍵是「換」。一切以換為前提、做任何事情之前先要換,準確理解之前就要「換」。

即在對相關命令或語句的含義和功能作具體分析之前就要換:

例: #define pi 3.1415926

把程式中出現的pi全部換成3.1415926

說明:(1)巨集名一般用大寫

(2)使用巨集可提高程式的通用性和易讀性,減少不一致性,減少輸入錯誤和便於修改。例如:陣列大小常用巨集定義

(3)預處理是在編譯之前的處理,而編譯工作的任務之一就是語法檢查,預處理不做語法檢查。

(4)巨集定義末尾不加分號;

(5)巨集定義寫在函式的花括號外邊,作用域為其後的程式,通常在檔案的最開頭。

(6)可以用#undef命令終止巨集定義的作用域

(7)巨集定義可以巢狀

(8)字串" "中永遠不包含巨集

(9)巨集定義不分配記憶體,變數定義分配記憶體。

編輯本段2.帶引數的巨集定義:

除了一般的字串替換,還要做引數代換

格式:#define 巨集名(參數列) 字串

例如:#define s(a,b) a*b

area=s(3,2);第一步被換為area=a*b; ,第二步被換為area=3*2;

類似於函式呼叫,有一個啞實結合的過程:

(1)實參如果是表示式容易出問題

#define s(r) r*r

area=s(a+b);第一步換為area=r*r;,第二步被換為area=a+b*a+b;

正確的巨集定義是#define s(r) ((r)*(r))

(2)巨集名和引數的括號間不能有空格

(3)巨集替換隻作替換,不做計算,不做表示式求解

(4)函式呼叫在編譯後程式執行時進行,並且分配記憶體。巨集替換在編譯前進行,不分配記憶體

(5)巨集的啞實結合不存在型別,也沒有型別轉換。

(6)函式只有一個返回值,利用巨集則可以設法得到多個值

(7)巨集使源程式變長,函式呼叫不會

(8)巨集不佔執行時間,只佔編譯時間,函式呼叫佔執行時間(分配記憶體、保留現場、值傳遞、返回值

c語言巨集定義技巧(常用巨集定義)

寫好c語言,漂亮的巨集定義很重要,使用巨集定義可以防止出錯,提高可移植性,可讀性,方便性 等等。下面列舉一些成熟軟體中常用得巨集定義。。。。。。

這個C語言巨集是什麼意思,在C語言中「巨集是什麼意思」

巨集就是用於預編譯的,沒實質內容的東西,只是為了自己好看 方便閱讀之類。只是完整的替代。或者方便 移植之類。你這裡的data應該是你對應環境的一個偽指令 功能 指令用於將一個內部ram 的地址賦給指定的符號名指令格式 符號名 data 表示式 數值表示式的值應在0 255 之間,表示式必須是一個簡單...

隱喻這個詞是什麼意思,隱喻的定義是什麼

隱喻的意思 一種修辭手段,用一個詞或短語指出常見的一種物體或概念以代替另一種物體或概念,從而暗示它們之間的相似之處。比喻的一種。不直接點明是比喻,但實際上是打比方,常用 是 成 就是 成為 變為 等於 等表明甲事物就是乙事物。構成方式是本體和喻體之間不用喻詞 如 像 之類,而是用 是 成為 等動詞來...

這個女人是什麼意思,這個女人是什麼意思?

其實他是在你面 來前,表現自源已,他有可能是愛上你bai了,但du又不願說出來,因zhi 他之前不是談過三dao四個女朋友了嗎,如果跟你說出來,又怕你會拒絕他,倒反而顯得尷尬了,所以只要有其他同事在場,就跟你說話,讓所有的同事們誤以為你倆是在談戀愛,他的目的就達到了,你的同事們到處一說,就會傳進你的...