本文目錄一覽:
在C語言中 宏定義是什麼?
在C語言源程序中,允許用一個標識符來表示一個字符串,稱為宏,宏定義是由源程序中的宏定義命令完成的,宏替換是由預處理程序自動完成的。宏定義是C提供的三種預處理功能的其中一種,這三種預處理包括:宏定義、文件包含、條件編譯。
擴展資料:
宏(Macro),是一種批量處理的稱謂。計算機科學裡的宏是一種抽象,它根據一系列預定義的規則替換一定的文本模式。
計算機語言如C語言或彙編語言有簡單的宏系統,由編譯器或彙編器的預處理器實現。C語言的宏預處理器的工作只是簡單的文本搜索和替換,使用附加的文本處理語言如M4,C程序員可以獲得更精巧的宏。
參考資料:
宏定義百度百科
C語言中的宏定義怎麼用?
C語言中的宏定義用法分為兩種。
1、不帶參數的宏定義比較簡單,就是用一個指定的標識符來代表一個字符串。它的一般形式為“#define 標識符 字符串”,例如#define E 2.718281828459。這種方法使用戶能以一個簡單的名字代替一個長的字符串。
2、帶參數的宏定義不是僅僅進行簡單的字符串替換,還要進行參數替換。其定義的一般形式為;“#define 標識符(宏名)(參數表) 字符串”,字符串中包含在括號中所指定的參數。例如#define S(a,b) a*b area=S(3. 2)。
擴展資料:
宏定義只佔編譯時間,函數調用則佔用運行時間(分配單元,保存現場,值傳遞,返回),每次執行都要載入,所以執行相對宏定義會較慢。
使用宏定義次數多時,宏定義展開後源程序很長,因為每展開一次都使程序增長,但是執行起來比較快一點(這也不是絕對的,當有很多宏定義展開,目標文件很大,執行的時候運行時系統換頁頻繁,效率就會低下)。而函數調用不使源程序變長。
什麼是c語言裡面的宏
幾點說明:
1.連接多行宏用 \
例如:
#define sum(a,b) \
a+b
2.宏在debug下顯示不出來(對於VC6.0)
3.由於宏只是原樣替換,所以請多使用括號,變量最好都用括號括起來
以下摘自:
宏定義
宏定義是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語言提供的三種預處理功能的其中一種,這三種預處理包括:宏定義、文件包含、條件編譯。宏定義和操作符的區別是:宏定義是替換,不做計算,也不做表達式求解。
1. 不帶參數的宏定義:
宏定義又稱為宏代換、宏替換,簡稱“宏”。
格式: #define 標識符 字符串
其中的標識符就是所謂的符號常量,也稱為“宏名”。
預處理(預編譯)工作也叫做宏展開:將宏名替換為字符串。
掌握”宏”概念的關鍵是“換”。一切以換為前提、做任何事情之前先要換,準確理解之前就要“換”。
(1)宏名一般用大寫
(2)使用宏可提高程序的通用性和易讀性,減少不一致性,減少輸入錯誤和便於修改。例如:數組大小常用宏定義
(3)預處理是在編譯之前的處理,而編譯工作的任務之一就是語法檢查,預處理不做語法檢查。
(4)宏定義末尾不加分號;
(5)宏定義寫在函數的花括號外邊,作用域為其後的程序,通常在文件的最開頭。
(6)可以用#undef命令終止宏定義的作用域
(7)宏定義可以嵌套
(8)字符串” “中永遠不包含宏
(9)宏定義不分配內存,變量定義分配內存。
2. 帶參數的宏定義:
除了一般的字符串替換,還要做參數代換。
c語言中“宏”是個什麼東西 有什麼意義
“宏”,就是大的意思,c語言中的宏,是一種可以代表任何語言元素的標識符。
這裡還有一個概念,就是宏定義,例如:#define
A
b+c
宏定義出現在c語言的源代碼中,在正式編譯前,編譯器會進行預處理,而預處理過程包括一個很重要的任務(當然還有其它任務),就是替換宏,這種替換是一種機械的替換,並不考慮標識符的語法,語義,也就是說當遇到上面的A時,會直接替換成b+c。
還有一種更加靈活的宏,是帶參數的宏,例如:#define
F(a,b)
(a)+(b)
替換時會根據引入參數,這樣,F(1,2)會被替換成(1)+(2)。
在C語言中“宏是什麼意思”
定義的意思
在C語言中的宏定義就是定義外部變量 內部函數使用exiterm來調用
如:exiterm char c1,c2;
C語言中的宏定義的字是:define
C語言中的define宏定義有帶參數的和不帶參數兩中形式
不帶參格式是:#define 宏名 字符串
帶參格式是:#define 宏名(參數1,參數2,…) 字符串
在C語言里宏定義只用來做的宏名替換,而不做語法檢查的,因而它不是C語句,所以在宏定義的時候不需要在後面加”;”
宏也在C里也叫預處理命令,因為宏是在程序編譯前先進行字符替換的,所以叫預處理.在C里還有其它的預處理命令如:
#define
#undef
#ifdef
等等
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/154862.html