2021-12-16 16:00:29|已瀏覽:398次

C語言知識總結:宏定義
以#號開頭的都是編譯預處理指令,它們不是C語言的成分,但是C程序離不開它們,#define用來定義一個宏,程序在預處理階段將用define定義的來內容進行了替換。因此在程序運行時,常量表中并沒有用define定義的常量,系統不為它分配內存。define定義的常量,預處理時只是直接進行了替換,它用來將一個標識符定義為一個字符串,該標識符被稱為宏名,被定義的字符串稱為替換文本。,因此在編譯時它不對宏的定義進行檢查,作用域不影響對常量的訪問 。它的常量值只能是字符串或數字。
該命令有兩種格式:一種是簡單的常量宏定義, 另一種是帶參數的宏定義。
不帶參數的宏:#define< 名字 >< 值 > 要注意,沒有結尾的分號,因為不是C的語句,名字必須是一個單詞,值可以是各種東西,宏定義是用宏名來表示一個字符串,在宏展開時又以該字符串取代宏名,這只是一種簡單的代換,字符串中可以含任何字符,可以是常數,也可以是表達式,預處理程序對它不作任何檢查。如有錯誤,只能在編譯已被宏展開后的源程序時發現。
注意.宏定義不是說明或語句,在行末不必加分號,如加上分號則連分號也一起置換。宏定義其作用域為宏定義命令起到源程序結束。如要終止其作用域可使用#undef命令
帶參數的宏 :
像函數的宏,一般的定義形式 :帶參宏定義的一般形式為:「#define 宏名」(形參表)字符串,也是沒有結尾的分號,可以帶多個參數 ,#define NB(a,b)((a)>(b)?(b):(a)), 也可以組合(嵌套)使用其他宏,注意 帶參數宏的原則 一切都要有括號,參數出現的每個地方都要有括號。帶參數的宏在大型的程序的代碼中使用非常普遍,在#和##這兩個運算符的幫助下可以很復雜,如“產生函數”,但是有些宏會被inline函數代替(C++的函數)
使用宏好處:
“提高運行效”。定義的標識符不占內存,只是一個臨時的符號,預編譯后這個符號就不存在了。在簡單的程序使用帶參數的宏定義可完成函數調用的功能,又能減少系統開銷,提高運行效率。正如C語言中所講,函數的使用可以使程序更加模塊化,便于組織,而且可重復利用。 “方便程序的修改”。使用宏定義可以用宏代替一個在程序中經常使用的常量。注意,是“經常”使用的。這樣,當需要改變這個常量的值時,就不需要對整個程序一個一個進行修改,只需修改宏定義中的常量即可。且當常量比較長時,使用宏就可以用較短的有意義的標識符來代替它,這樣編程的時候就會更方便,不容易出錯。因此,宏定義的優點就是方便和易于維護。
本文由培訓無憂網達內教育課程顧問老師整理發布,更多課程信息可關注C語言培訓或添加老師微信:15033336050
注:尊重原創文章,轉載請注明出處和鏈接 http://m.hebeijilong.cn/news-id-8102.html 違者必究!部分文章來源于網絡由培訓無憂網編輯部人員整理發布,內容真實性請自行核實或聯系我們,了解更多相關資訊請關注c語言頻道查看更多,了解相關專業課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050