1樓:匿名使用者
一眼看去巨集的名稱一般是全大寫字母加下劃線,再去定義的地方檢視,巨集定義有#define 函式更明顯
2樓:蕭竣閏
很簡單,巨集定義都有#
函式都有返回型別,比如void,int,等
c 語言 中 巨集和函式的區別
3樓:路過只是巧合
#define a 10
#define max(a,b) a>b?a:b
max(a,b)
c語言中帶引數的巨集定義與函式的區別(試舉例)
4樓:匿名使用者
如果合理的使用巨集,會提高**的質量,而且巨集用起來感覺也是很方便的
5樓:魔鬼魚
巨集只是字元的替換,在預處理階段就給替換到**中去了比如下面的**
#include
#define max(x, y) ((x)>(y)?(x):y())
int main()
如果你用的是gcc編譯器,執行 gcc -e main.c -o main.i,開啟main.
i檔案就可以看到他是如何替換進去的,直接拖到最後,前面的都是stdio.h中的內容。
int main()
函式就不同了,函式還需要分配棧空間,在執行函式時都要進行入棧和出棧操作,有的還需要分配堆空間。
巨集所實現的功能有限,而且長**不易讀,但是對於邏輯簡單、**不長、經常使用的功能由巨集來實現是個不錯的選擇
6樓:匿名使用者
#define max(a,b) (a>b ? a : b)//這是巨集
int max(int a, int b)//這是函式
c語言與巨集指令有什麼關係?
7樓:匿名使用者
c語言裡面可以用巨集定義
都一樣了,就像你申明乙個變數一樣簡單.
8樓:平凡人生
#define m(巨集定義名) 2*3(表示式)
相當於用m替代後面的表示式
9樓:匿名使用者
c語言是高階語言。
巨集指令是組合語言程式中的一種偽指令。
最終它們都是編譯成cpu能夠識別的二進位制指令。
10樓:
巨集指令是在預編譯時解釋
而c語言是在編譯時解釋
11樓:自然之風祥
程式的整體編譯過程為:預處理、編譯、優化、彙編、連線。巨集指令主要用到的死#define,#ifdef,#endif等,預處理就是處理這些指令
c語言中巨集函式跟自定義的函式有什麼區別?
12樓:天蠍神經俠侶
巨集函式是預定義的,在用的時候方面快捷,有效率;在某種程度上來說,巨集函式和自定義函式是有區別的,但作為乙個函式的本身來說,沒有實質性的區別。
13樓:匿名使用者
可以把巨集理解成拼字遊戲,它功能很強大,但是強大到使用不好就會有***。c++有很多語言設施用來完全特定功能的巨集,如const,inline,template,就是為了讓大家少用巨集。給你舉個巨集和函式不同的例子**:
#define max(x,y) ((x)>(y)?(x):(y))template
inline t max(t x,t y)看起來似乎是相同的功能,可是函式呼叫,畢竟會求完每乙個實參的值,再傳遞給被調函式,即使宣告了inline,在呼叫點而不發生實際的呼叫開銷。
但是你試試用這個呼叫巨集,結果就會有問題:
int i=4,j=5;
int k=max(i++,j++);
如果是函式呼叫,i==5,j==6,k==5。如果是巨集的話,結果是:
int k=((i++)>(j++)?(i++):(j++));
你覺得會一樣嗎?所以,慎用巨集。
mfc中有很多功能是巨集完成的,它太強大了,很多情況下有巨集很高效,但是不容易控制。
14樓:
巨集定義是代換,簡單的函式與巨集定義並沒有什麼區別但你想想
比如乙個函式要實現這樣乙個功能:如果x>y,那麼求x+y,如果x 這種在計算之前要經過判斷的函式,你就不能用巨集定義了把? 15樓: 巨集函式如果沒有函式原型,哪麼它沒有函式堆疊也沒有形式引數,實際上只是caller的一部分 .如果有函式原型,如下 --------------- #define fun1(param1,param2) \dowhile(0) --------------- 這樣的巨集是有函式原型的,它和函式沒有區別 16樓:匿名使用者 巨集定義是方便修改程式的一種方法,在程式的開頭定義某種定量,在以下的程式中就可以隨時的方便修改。 17樓:我註冊總行了吧 /*比如 乙個函式要實現這樣乙個功能:如果x>y,那麼求x+y,如果xb)?x+y:((a
。。。。。。 18樓:匿名使用者 巨集函式是預定義的,比自定義的函式更有效率,如果你的自定義函式短小,並且為inline的,那麼也沒有什麼實質的區別! c語言中的巨集定義怎麼用? 19樓:仁昌居士 c語言bai中的巨集 定義用du法分為兩種。 1、不帶引數zhi的巨集定義比較dao簡單,就是用乙個指定回的答識別符號來代表乙個字串。它的一般形式為「#define 識別符號 字串」,例如#define e 2.718281828459。 這種方法使使用者能以乙個簡單的名字代替乙個長的字串。 2、帶引數的巨集定義不是僅僅進行簡單的字串替換,還要進行引數替換。其定義的一般形式為;「#define 識別符號(巨集名)(參數列) 字串」,字串中包含在括號中所指定的引數。例如#define s(a,b) a*b area=s(3. 2)。 20樓:天雲一號 巨集定義的格式如下: #define 識別符號 字串 其中,#表示這是一條預處理命令;內#define為巨集容定義命令;「識別符號」為巨集定義的巨集名;「字串」可以上常數、表示式、格式串等。 舉例如下: #define pi 3.14 // 對3.14進行巨集定義,巨集名為pi void main() 21樓:匿名使用者 在想對特定的內容定義的時候用 參考** 有問版題請追問 滿意記得權採納 22樓:匿名使用者 #define 巨集名稱 定值 c語言,巨集定義,與函式的差別 我覺得巨集定義和函式沒什麼差別啊, 是否可以用巨集定義代替函式 23樓: 不同。雖然功能近似,但函式會產生獨立**,每次呼叫執行的是同乙個位置的**,無論呼叫多少次。 巨集定義是簡單的文字替換,產生的**是替換後程式產生的**,簡單說就是程式裡每次使用巨集替換後的地方都要產生類似的**,而這些替換後產生的**存在於程式的不同位置。 巨集定義不檢查引數型別,僅僅是簡單的文字替換 24樓:來自海印寺芳香襲人 的啄木鳥 首先巨集定義和函式是有差別的 巨集定義是在編譯之前處理的,不做語法檢查。 這個很危險另外我要說 #define a(b,c) 表示bc之合,在結果上和函式確實一樣 25樓:匿名使用者 但是當函式複雜的情況下,你就沒法代替了哦! 26樓:匿名使用者 #define a(x,y) x>y?x*y:x+y和int a(x,y) a(x+y,x*y)這個表示式對於以上兩種定義的得到的結果是不一樣的而且,巨集有巨集的有點,函式有函式的優點 函式的優點就是占用儲存空間少,缺點是每次呼叫函式都要呼叫中斷程式,影響執行效率 巨集的優點就是直接巨集,每次呼叫都要,所以比較佔儲存空間,但是相應的就不用呼叫中斷程式了,執行效率自然就高了 標頭檔案並不能代表什麼。主要要學習函式,及函式在那個標頭檔案中定義。但c的函式實在太多了,此外,各種c編譯器中c的函式也有所不同。c c 標頭檔案一覽 c 傳統 c include 設定插入點 include 字元處理 include 定義錯誤碼 include 浮點數處理 include 檔案輸入... 正確理解愛吧 愛 主要是看你怎麼去對待它了,平平淡淡的愛才是真,在愛上乙個人的時候,就不要去計較愛情的浪漫和很多種的愛情方式,這個每個人的去愛的方式不同,不要不知足,太貪心了,會失去難得的真愛,有人說愛情是不會長久的,我認為是錯誤的,愛情有長久的時候,因為你沒有做到保護真愛的時候,才會導致愛情是短暫... 法球和法球是不能疊加的。法球和攻擊特效是能疊加的。吸血鬼的祭品是近戰的吸血效果,但不是法球所以能和 散失 支配 暗滅 瘋狂 這些法球效果疊加。遠端出祭品沒用。冰眼 近戰屬於 法球 遠端屬於 特效所以遠端能出 支配 任意乙個法球 和 冰眼。攻擊特效有 大炮 毒球 攻擊特效之間不能疊加,所以只能出乙個。... 大學學的c c 都是最基本的語法,想做軟體 還需要學stl。如果你要做遊戲,還要學directx,不過這些對於學過c 的人來說都是很簡單的事情了。如果想往高處走,數學就別丟了。大學所學的 網路技術,計算機組成原理,這些原理性的東西都是為你以後更高階鋪路的。當然資料庫也很重要。哇塞 學過這麼多種語言 ... 歌曲 美麗的神話。歌手 孫楠 韓紅 忘不了你。夢中的人熟悉的臉孔。你是我守候的溫柔。就算淚水淹沒天地。我不會放手,每一刻孤獨的承受。只因我曾許下承諾。你我之間熟悉的感動。愛就要甦醒。萬世滄桑唯有愛是永遠的神話。潮起潮落始終不悔真愛的相約。幾番若痛的糾纏多少黑夜掐扎。緊握雙手讓我和你再也不離分。枕上雪...我想知道c語言盡可能多的標頭檔案以及每個頭的作用
我想知道,在愛情裡面什麼才算是公平
我想知道dota裡面有哪些物品效果衝突
我現在已經學了C C組合語言程式設計,我想知道我現在需要怎麼補充自己的知識??謝謝
我想知道這裡面神話組合被翻唱的幾首在哪找阿