c語言中宏定義
⑴ 什麼是宏定義
宏定義是高級語言編譯器提供的常用語法,其目的是利用某一標識符標識某個文本字元串。在編寫程序時,如果程序中反復地使用某個數據或某段程序片段,就可以考慮將這個數據或程序片段定義為宏,然後每個出現該數據或程序片段的地方用宏名替代
選擇宏定義來做的好處是程序簡潔,可讀性好,而且當需要修改這些相同的程序片段時,只要修改宏定義中的字元串即可,不需要修改多處。
(1)c語言中宏定義擴展閱讀:
參宏定義中#的用法:
#defineSTR(str) #str
#用於把宏定義中的參數兩端加上字元串的""
比如,這里STR(my#name)會被替換成"my#name",一般由任意字元都可以做形參,但以下情況會出錯:
STR())這樣,編譯器不會把")"當成STR()的參數。STR(,)同上,編譯器不會把","當成STR的參數。STR(A,B)如果實參過多,則編譯器會把多餘的參數捨去。
(VC++2008為例)STR((A,B))會被解讀為實參為:(A,B),而不是被解讀為兩個實參,第一個是(A第二個是B)。
⑵ 在C語言中「宏是什麼意思」
宏,是什麼,樓上已經說了,但我不確信他說的是完全正確的.
c語言中的宏定義的字是:define
c語言中的define宏定義有帶參數的和不帶參數兩中形式
不帶參格式是:#define
宏名
字元串
帶參格式是:#define
宏名(參數1,參數2,...)
字元串
在c語言里宏定義只用來做的宏名替換,而不做語法檢查的,因而它不是c語句,所以在宏定義的時候不需要在後面加";"
宏也在c里也叫預處理命令,因為宏是在程序編譯前先進行字元替換的,所以叫預處理.在c里還有其它的預處理命令如:
#define
#undef
#ifdef
等等
⑶ C語言中的宏定義怎麼用
C語言中的宏定義用法分為兩種。
1、不帶參數的宏定義比較簡單,就是用一個指定的標識符來代表一個字元串。它的一般形式為「#define 標識符 字元串」,例如#define E 2.718281828459。這種方法使用戶能以一個簡單的名字代替一個長的字元串。
2、帶參數的宏定義不是僅僅進行簡單的字元串替換,還要進行參數替換。其定義的一般形式為;「#define 標識符(宏名)(參數表) 字元串」,字元串中包含在括弧中所指定的參數。例如#define S(a,b) a*b area=S(3. 2)。
(3)c語言中宏定義擴展閱讀:
宏定義只佔編譯時間,函數調用則佔用運行時間(分配單元,保存現場,值傳遞,返回),每次執行都要載入,所以執行相對宏定義會較慢。
使用宏定義次數多時,宏定義展開後源程序很長,因為每展開一次都使程序增長,但是執行起來比較快一點(這也不是絕對的,當有很多宏定義展開,目標文件很大,執行的時候運行時系統換頁頻繁,效率就會低下)。而函數調用不使源程序變長。
⑷ c語言中的「宏」是指什麼
是一種批量處理的稱謂。計算機科學里的宏是一種抽象(Abstraction),它根據一系列預定義的規則替換一定的文本模式。
「宏」這個詞的使用暗示著將小命令或動作轉化為一系列指令。
計算機語言如C語言或 匯編語言有簡單的宏系統,由編譯器或匯編器的預處理器實現。C語言的宏預處理器的工作只是簡單的文本搜索和替換,使用附加的文本處理語言如M4,C程序員可以獲得更精巧的宏。
在Objective-C語言源程序中,允許用一個標識符來表示一個字元串,稱為宏,被定義為宏的標識符稱為宏名。在編譯預處理時,對程序中所有出現的宏名,都用宏定義中的字元串去替換,這稱為宏替換或宏展開。
宏定義是由源程序中的宏定義命令完成的,宏替換是由預處理程序自動完成的。在Objective-C語言中,宏分為有參數和無參數兩種。
(4)c語言中宏定義擴展閱讀
A類宏是用G65 Hxx P#xx Q#xx R#xx或G65
Hxx P#xx Qxx
Rxx格式輸入的,xx的意思就是數值,是以um級的量輸入的,比如你輸入100那就是0.1MM #xx就是變數號,變數號就是把數值代入到一個固定的地址中,固定的地址就是變數。
一般OTD系有#0~#100~#149~#500~#531.關閉電源時變數#100~#149被初始化成「空」,而變數#500~#531保持數據。我們如果說#100=30那麼現在#100地址內的數據就是30了。
B類宏能完成某一功能的一系列指令像子程序那樣存入存儲器,用戶可以設定M、S、T、G代碼調用它們,使用時只需給出這個指令代碼就能執行其功能,也可以像調用子程序一樣使用。
⑸ c語言中宏定義是什麼意思
您好!很高興為您解答。
宏定義的用處主要體現在便於程序的調試上。
比如我要寫一個計算圓相關信息(周長、面積等等)的程序,需要定義π(3.14):
#define PI 3.14
那麼勢必PI這個標識可以在程序中代替所有的3.14,如果我發現計算的精度不夠,需要π的更多有效位時,則只需將宏定義修改為:
#define PI 3.1415926
那麼程序中的所有PI都會變成3.1415926
可想而知,沒有宏定義,我需要將代碼中全部的3.14都手動改為3.1415926
即使是定義double PI=3.14;,你會發現當代碼很長時,在亂軍叢中找到一行「double PI=3.14;」是多麼困難的事。
又比如數組,定義時是不能出現「int a[n];」這樣的定義的,編譯通不過,因為必須規定數組長度。
但如果是:
#define N 10
int a[N];
就可以,對宏定義編譯器是不作檢查的,應為宏定義只是簡單的符號替換。所以一旦我還沒有確定要定義多長的數組,但又想通過編譯時,就可以提現宏定義的用處了。
如此看來,宏定義提升了程序編寫的靈活性。
望採納~如您還有不解,歡迎追問~
⑹ c語言中的宏定義是什麼意思可不可以詳細的解釋一下~
宏定義又稱為宏代換、宏替換,簡稱「宏」。
格式:
#define
標識符
字元串
其中的標識符就是所謂的符號常量,也稱為「宏名」。
預處理(預編譯)工作也叫做宏展開:將宏名替換為字元串。
掌握"宏"概念的關鍵是「換」。一切以換為前提、做任何事情之前先要換,准確理解之前就要「換」。
即在對相關命令或語句的含義和功能作具體分析之前就要換:
例:
#define
pi
3.1415926
把程序中出現的pi全部換成3.1415926
⑺ 在C語言中 宏定義是什麼
在C語言源程序中,允許用一個標識符來表示一個字元串,稱為宏,宏定義是由源程序中的宏定義命令完成的,宏替換是由預處理程序自動完成的。宏定義是C提供的三種預處理功能的其中一種,這三種預處理包括:宏定義、文件包含、條件編譯。
(7)c語言中宏定義擴展閱讀:
宏(Macro),是一種批量處理的稱謂。計算機科學里的宏是一種抽象,它根據一系列預定義的規則替換一定的文本模式。
計算機語言如C語言或匯編語言有簡單的宏系統,由編譯器或匯編器的預處理器實現。C語言的宏預處理器的工作只是簡單的文本搜索和替換,使用附加的文本處理語言如M4,C程序員可以獲得更精巧的宏。
⑻ c語言中「宏」是個什麼東西 有什麼意義
「宏」,就是大的意思,c語言中的宏,是一種可以代表任何語言元素的標識符。
這里還有一個概念,就是宏定義,例如:#define
A
b+c
宏定義出現在c語言的源代碼中,在正式編譯前,編譯器會進行預處理,而預處理過程包括一個很重要的任務(當然還有其它任務),就是替換宏,這種替換是一種機械的替換,並不考慮標識符的語法,語義,也就是說當遇到上面的A時,會直接替換成b+c。
還有一種更加靈活的宏,是帶參數的宏,例如:#define
F(a,b)
(a)+(b)
替換時會根據引入參數,這樣,F(1,2)會被替換成(1)+(2)。
⑼ 宏定義c語言是什麼意思
在C語言源程序中,允許用一個標識符來表示一個字元串,稱為宏,宏定義是由源程序中的宏定義命令完成的,宏替換是由預處理程序自動完成的。宏定義是C提供的三種預處理功能的其中一種,這三種預處理包括:宏定義、文件包含、條件編譯。
C語言中,預處理過程讀入源代碼,檢查包含預處理指令的語句和宏定義,並對源代碼進行相應的轉換,預處理過程還會刪除程序中的注釋和多餘的空白符號。
預處理指令是以#開頭的代碼行,#必須是該行除了空白字元外的第一個字元。#後是指令關鍵字,在#和指令關鍵字之間允許存在若干空白字元。
宏的用途
在於自動化頻繁使用的序列或者是獲得一種更強大的抽象能力。
計算機語言如C語言或匯編語言有簡單的宏系統,由編譯器或匯編器的預處理器實現。C語言的宏預處理器的工作只是簡單的文本搜索和替換,使用附加的文本處理語言如M4,C程序員可以獲得更精巧的宏。
Lisp類語言如Common Lisp和Scheme有更精巧的宏系統:宏的行為如同是函數對自身程序文本的變形,並且可以應用全部語言來表達這種變形。一個C宏可以定義一段語法的替換,然而一個Lisp的宏卻可以控制一節代碼的計算。
以上內容參考:網路-宏定義
⑽ C語言宏定義
樓主看看書,仔細看看編譯預處理都做了哪些事情。
程序設計語言的預處理的概念:在編譯之前進行的處理。 C語言的預處理主要有三個方面的內容: 1.宏定義; 2.文件包含; 3.條件編譯。 預處理命令以符號「#」開頭。
宏定義又稱為宏代換、宏替換,簡稱「宏」。預處理製作單純的宏展開,並不是檢查語法錯誤,所說義是錯誤的。
語法錯誤都是編譯階段才檢查的。預處理是不檢查的。