国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

在C++中自定義宏的簡單方法

2020-05-23 14:18:12
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了在C++中自定義宏的簡單方法,作者建議使用類似定義函數一樣的方法來定義宏,需要的朋友可以參考下
 

可以使用宏定義沒有返回值的“函數”。例如:

 

復制代碼代碼如下:
#define PrintMax(a, b) /   do /   { /     int x = a, y = b; /     printf("Max: %d/n", x > y ? x : y);/   } while (0) // ... PrintMax(3, 4);

 

    這樣的“函數”與真正意義上的函數有本質的區別,因為宏是一個編譯前行為,僅僅是編譯前對文本進行替換。在Python源碼中,經常可以看到下面類似的宏定義:
 

  1. #define foo(x) / do { /  ... / } while (0)  
?

    為什么要使用do { ... } while (0)這樣的語法而不直接使用 { } 呢?定義了上面這個宏,我們就可以在代碼中使用類似這樣的代碼:foo(3); 注意結尾的分號,它看起來很像一個函數,實現上它表示一條語句。如果使用 { } 來代替 do { ... }  while (0),那么使用分號顯然是個語法錯誤。

    使用宏時,有幾點要特別注意:

    要特別留心空格。下面的兩個宏是一樣的:
 

  1. #define foo(x) (x << 2) #define boo (x) (x << 2) //注意括號前面的空格  
?

    用宏給類型取別名與typedef有很大的區別。例如:

 

復制代碼代碼如下:
#define INT int * INT p1, p2; // p1是指針,p2是一個int變量 typedef int * INT; INT p1, p2; // p1, p2都為指針 //--------------------------------------------------- #define LONG long unsigned LONG v1; // v1是一個無符號的long變量 typedef long LONG; unsigned LONG v1; // 錯誤哦~~~ 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 彰化县| 陆川县| 灵石县| 宜丰县| 英德市| 东明县| 桓台县| 澳门| 景泰县| 星子县| 腾冲县| 西盟| 扎兰屯市| 平江县| 安顺市| 政和县| 河津市| 察哈| 什邡市| 潍坊市| 长丰县| 历史| 同德县| 漳州市| 勐海县| 景宁| 乌兰察布市| 福鼎市| 枞阳县| 古蔺县| 鹿邑县| 柯坪县| 黔西| 马关县| 竹山县| 井研县| 辽宁省| 兴仁县| 仁布县| 治多县| 申扎县|