雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網!

C語言

當前位置:主頁 > 軟件編程 > C語言 >

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

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊:

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

 

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

    這樣的“函數(shù)”與真正意義上的函數(shù)有本質的區(qū)別,因為宏是一個編譯前行為,僅僅是編譯前對文本進行替換。在Python源碼中,經??梢钥吹较旅骖愃频暮甓x:

 #define foo(x) \ do { \  ... \ } while (0) 

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

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

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

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

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

復制代碼 代碼如下:
#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; // 錯誤哦~~~ 
 

上一篇:C++將CBitmap類中的圖像保存到文件的方法

欄    目:C語言

下一篇:C語言實現(xiàn)BMP轉換JPG的方法

本文標題:在C++中自定義宏的簡單方法

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/2963.html

網頁制作CMS教程網絡編程軟件編程腳本語言數(shù)據(jù)庫服務器

如果侵犯了您的權利,請與我們聯(lián)系,我們將在24小時內進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網 版權所有