国产探花免费观看_亚洲丰满少妇自慰呻吟_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; // 錯誤哦~~~ 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永吉县| 六安市| 铜川市| 报价| 漳州市| 平湖市| 鹤峰县| 象山县| 双桥区| 宿松县| 嘉义县| 刚察县| 沽源县| 高陵县| 天等县| 扎鲁特旗| 泗阳县| 福建省| 马尔康县| 丹棱县| 内黄县| 滦平县| 凌云县| 清河县| 麻城市| 南华县| 莱西市| 谢通门县| 遂溪县| 抚顺县| 花莲市| 子洲县| 武安市| 凯里市| 怀远县| 扶风县| 且末县| 游戏| 阜南县| 布拖县| 井研县|