欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

#define identifier string

注意:
1.該語句沒有分號。在標識符和串之間可以有任意個空格,串一旦開始,僅由一新行結束。
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ù)調用的開銷。但增加速度也有代價:由于重復編碼而增加了程序長度。

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

#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,也就不會展開。

相關文章

  • C語言設計前中后隊列實例代碼

    C語言設計前中后隊列實例代碼

    隊列最主要的作用就是用來管理數(shù)據(jù)流的,防止數(shù)據(jù)因為傳輸頻率過快得不到及時處理而丟失,下面這篇文章主要給大家介紹了關于C語言設計前中后隊列的相關資料,需要的朋友可以參考下
    2021-12-12
  • C語言sizeof和strlen區(qū)別小結

    C語言sizeof和strlen區(qū)別小結

    C語言中的sizeof和strlen是兩個常用的操作符/函數(shù),但它們的功能和用途有很大的區(qū)別,本文就詳細的來介紹一下C語言sizeof和strlen區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • c++中new的三種用法詳細解析

    c++中new的三種用法詳細解析

    以下的是對c++中new的三種使用方法進行了詳細的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-09-09
  • Qt音視頻開發(fā)之實現(xiàn)ffmpeg視頻旋轉顯示

    Qt音視頻開發(fā)之實現(xiàn)ffmpeg視頻旋轉顯示

    這篇文章主要為大家詳細介紹了在Qt音視頻開發(fā)中如何利用ffmpeg實現(xiàn)視頻旋轉顯示,文中的實現(xiàn)步驟講講清晰,感興趣的小伙伴可以了解一下
    2023-03-03
  • 利用反射獲得類的public static/const成員的值實例

    利用反射獲得類的public static/const成員的值實例

    下面小編就為大家?guī)硪黄梅瓷浍@得類的public static/const成員的值實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 詳解C++中普通舊數(shù)據(jù)(POD)的使用

    詳解C++中普通舊數(shù)據(jù)(POD)的使用

    普通舊數(shù)據(jù)就是內存中的連續(xù)字節(jié)序列,是能夠被“僅當作數(shù)據(jù)”處理的對象。這篇文章主要帶大家了解一下C++中普通舊數(shù)據(jù)的定義與使用,感興趣的可以了解下
    2023-03-03
  • C語言全面梳理結構體知識點

    C語言全面梳理結構體知識點

    結構體是一些值的集合,這些值稱為成員變量,結構體的每個成員可以是不同類型的變量。本文將通過示例為大家詳細講講C語言中結構體的使用,需要的可以參考一下
    2022-07-07
  • C語言實現(xiàn)套接字操作的示例代碼

    C語言實現(xiàn)套接字操作的示例代碼

    在C語言中,套接字(Socket)是一種進行網絡通信的接口,這篇文章就來和大家介紹一下C語言中是如何進行套接字操作的,需要的可以參考一下
    2023-06-06
  • C++:構造函數(shù),析構函數(shù)詳解

    C++:構造函數(shù),析構函數(shù)詳解

    今天小編就為大家分享一篇關于C++構造函數(shù)和析構函數(shù)的文章,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-09-09
  • 五個嵌入式C語言中的實用技巧分享

    五個嵌入式C語言中的實用技巧分享

    這篇文章主要和大家分享一下五個嵌入式C語言中的實用技巧,文中的示例代碼講解詳細,對我們學習C語言有一定的幫助,需要的可以參考一下
    2022-12-12

最新評論