最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C語言中的#define宏定義命令用法

 更新時間:2016年05月12日 17:36:44   作者:飛翔的貓咪  
有的時候為了程序的通用性,可以使用#define預處理宏定義命令,它的具體作用就是方便程序段的定義和修改,下面就來詳解C語言中的#define宏定義命令用法.

#define
命令#define定義了一個標識符及一個串。在源程序中每次遇到該標識符時,均以定義的串代換它。ANSI標準將標識符定義為宏名,將替換過程稱為宏替換。命令的一般形式為:

#define identifier string

注意:
1.該語句沒有分號。在標識符和串之間可以有任意個空格,串一旦開始,僅由一新行結(jié)束。
2.宏名定義后,即可成為其它宏名定義中的一部分。
3.宏替換僅僅是以文本串代替宏標識符,前提是宏標識符必須獨立的識別出來,否則不進行替換。例如:
#define XYZ this is a tes
使用宏printf("XYZ");//該段不打印"this is a test"而打印"XYZ"。因為預編譯器識別出的是"XYZ"
4.如果串長于一行,可以在該行末尾用一反斜杠' \'續(xù)行。
#defineLONG_STRING"this is a very long\
string that is used as an example"
5.C語言程序普遍使用大寫字母定義標識符。
6.用宏代換代替實在的函數(shù)的一大好處是宏替換增加了代碼的速度,因為不存在函數(shù)調(diào)用的開銷。但增加速度也有代價:由于重復編碼而增加了程序長度。

宏定義的注意事項
試圖使用宏去定義注釋符號是不行的,例如以下代碼:

#define BSC //
#define BMC /*
#define EMC */
BSC my single-line comment
BMC my multi-line comment EMC

因為注釋先于預處理指令處理,當展開這些宏定義的時候自然會出現(xiàn)一堆錯誤。
宏定義表達式的時候一定不能吝嗇括號。這個不用解釋了。
宏定義的時候宏名中最好不要有空格。下面的定義會帶來很多麻煩:

  #define SUM (x) ((x)*(x))

一旦使用了#undef撤銷宏,則后面的代碼都不能使用這個宏,除非再次定義。此外,如果沒有#undef的情形下就直接再次定義,后來的定義會覆蓋掉前面的定義。下面代碼中的c值是4:

  #include <stdio.h>
 
  #define X 3
  #define Y X*2
  #undef X
  #define X 2
 
  int c = Y;
 
  int main(int argc, char** argv){
    printf("%d",c) ;
    return 0;
  }

宏僅在使用的時候展開,否則即使定義有問題,也不會編譯出錯。如果把上面代碼中的第二個#define注釋掉,并把C的值賦值為0,即撤銷了X定義,也不會報錯,因為沒有使用Y,也就不會展開。

相關(guān)文章

  • C++數(shù)據(jù)封裝以及定義結(jié)構(gòu)的詳細講解

    C++數(shù)據(jù)封裝以及定義結(jié)構(gòu)的詳細講解

    這篇文章主要詳細講解了C++數(shù)據(jù)封裝以及定義結(jié)構(gòu),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • 詳解C語言之文件操作(上)

    詳解C語言之文件操作(上)

    這篇文章主要介紹了關(guān)于C語言文件操作方法的相關(guān)資料,小編覺得這篇文章寫的還不錯,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-11-11
  • C++實現(xiàn)貪心算法(Greedy?Algorithm)的應(yīng)用場景示例

    C++實現(xiàn)貪心算法(Greedy?Algorithm)的應(yīng)用場景示例

    貪心算法是一種通過每一步選擇當前最優(yōu)解來推動全局最優(yōu)的啟發(fā)式算法,它適用于滿足貪心選擇性質(zhì)和最優(yōu)子結(jié)構(gòu)的問題,但并不總是能找到全局最優(yōu)解,貪心算法的關(guān)鍵在于設(shè)計正確的策略并證明其有效性,應(yīng)用范圍廣泛,包括資源調(diào)度、編碼壓縮、路徑規(guī)劃和網(wǎng)絡(luò)優(yōu)化等
    2025-11-11
  • C語言實現(xiàn)圖的最短路徑Floyd算法

    C語言實現(xiàn)圖的最短路徑Floyd算法

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)圖的最短路徑Floyd算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 關(guān)閉顯示器軟件代碼分享

    關(guān)閉顯示器軟件代碼分享

    這篇文章主要介紹了使用程序如何關(guān)閉顯示器的代碼,需要的朋友可以參考下
    2014-01-01
  • C語言實現(xiàn)掃雷小游戲(擴展版可選擇游戲難度)

    C語言實現(xiàn)掃雷小游戲(擴展版可選擇游戲難度)

    游戲目標是找出所有沒有地雷的方格,完成游戲;要是按了有地雷的方格,游戲失??;玩家可標記雷的位置,游戲以完成時間來評高低,并且用戶可以選擇游戲難度
    2019-10-10
  • 基于C++詳解數(shù)據(jù)結(jié)構(gòu)(附帶例題)

    基于C++詳解數(shù)據(jù)結(jié)構(gòu)(附帶例題)

    數(shù)據(jù)結(jié)構(gòu)作為每一個IT人不可回避的問題,本文基于C++編寫,下面這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • C++ 獲取 ros2 launch.py 參數(shù)的步驟

    C++ 獲取 ros2 launch.py 參數(shù)的步驟

    這篇文章主要介紹了C++ 獲取 ros2 launch.py 參數(shù)的步驟,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2025-04-04
  • 淺談在函數(shù)中返回動態(tài)的內(nèi)存

    淺談在函數(shù)中返回動態(tài)的內(nèi)存

    下面小編就為大家?guī)硪黄獪\談在函數(shù)中返回動態(tài)的內(nèi)存。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • c++調(diào)用windows鍵盤代碼詳情

    c++調(diào)用windows鍵盤代碼詳情

    c++調(diào)用windows鍵盤有好幾種方式,本文就根據(jù)列舉的例子對c++調(diào)用windows鍵盤詳細介紹并附上代碼說明,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09

最新評論

安福县| 门头沟区| 焉耆| 全椒县| 资溪县| 来安县| 河北区| 灵武市| 额尔古纳市| 长丰县| 福泉市| 舞阳县| 乌什县| 兰溪市| 文安县| 双鸭山市| 郴州市| 新疆| 达日县| 偃师市| 夏河县| 寿阳县| 台湾省| 大同市| 天峻县| 扶沟县| 徐闻县| 辰溪县| 巨鹿县| 延长县| 台北县| 仙居县| 双辽市| 自治县| 柘城县| 古交市| 赫章县| 孝义市| 万荣县| 海兴县| 杂多县|