日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

预处理命令[#define]说明

發布時間:2024/1/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 预处理命令[#define]说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

宏定義

  宏定義是對一些常見的變量、字符串等進行定義,被定義的數據在編譯會進行自動替換。有時一些變量或字符串被多次使用,當需要修改時,就需要對源文件中它們出現的地方一一修改,效率比較低,而通過宏定義,只需要對定義進行一次修改,就可以實現批量修改,提高效率,或者有時有些數字或字符需要多次輸入,而數字或字符又不是很規律時,輸入就會比較繁瑣且容易出錯。通過宏義將為輸入和維護帶來便利。

定義的格式

  #define 標識符?字符串

  其中的“#”表示這是一條預處理命令。凡是以“#”開頭的均為預處理命令。“define”為宏定義命令。“標識符”為所定義的宏名。“字符串”可以是常數、表達式、格式串等。

注意事項

  1.宏定義只是一種簡單的代換,預處理程序對它不作任何檢查。只能在編譯已被宏展開后的源程序時發現錯誤。
  2.宏定義不是說明或語句,在行末不必加分號,如加上分號則連分號也一起置換。
  3.宏定義其作用域為宏定義命令起到源程序結束。如要終止其作用域可使用#undef命令。

使用實例
  宏定義在處理有優先級順序的表達式時,應加括號,避免導致被宏展開后出現優先級錯誤。例如下面的代碼。

#define M a+b s=M*M; //等價于 s=a+b*a+b ///#define M (a+b) s=M*M; //等價于 s=(a+b)*(a+b) ///

  c語言允許宏帶有參數。在宏定義中的參數稱為形式參數,在宏調用中的參數稱為實際參數。對帶參數的宏,在調用中,不僅要宏展開,而且要用實參去代換形參。參見下面的代碼。

#define C(x) (3.14*X*2) c=C(5) //等價于 c=(3.14*5*2)
/// #define S(x,y) ((x)*(y))
s=S(2+3,4+4)
//等價于 s=((2+3)*(4+4))
///

  不可以對調用時會產生變化的變量、操作數或表達式等進行宏定義,如下代碼。

#define MIN(A,B) ((A)<(B)?(A):(B)) int a=1,b=5,min=0; min=MIN(a++,b);
//宏展開后表達式為:max=((a++)< (b)?(a++):(b))
//返回值為min=3
///

條件編譯

  在頭文件中通過使用#ifdef、#define和#endif的組合也可以進行條件編譯。條件編譯的目的是用以實現防止多個文件對此同一個頭文件的重復引用。常見的格式如下。

#ifndef <</SPAN>標識> #define <</SPAN>標識> ……… // include or define sth. #endif

  

  

?

轉載于:https://www.cnblogs.com/Mikhail/p/4379635.html

總結

以上是生活随笔為你收集整理的预处理命令[#define]说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。