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

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

 更新時(shí)間:2015年07月15日 09:18:11   投稿:goldensun  
這篇文章主要介紹了在C++中自定義宏的簡單方法,作者建議使用類似定義函數(shù)一樣的方法來定義宏,需要的朋友可以參考下

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

 

復(fù)制代碼 代碼如下:
#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ù)有本質(zhì)的區(qū)別,因?yàn)楹晔且粋€(gè)編譯前行為,僅僅是編譯前對(duì)文本進(jìn)行替換。在Python源碼中,經(jīng)??梢钥吹较旅骖愃频暮甓x:

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

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

    使用宏時(shí),有幾點(diǎn)要特別注意:

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

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

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

復(fù)制代碼 代碼如下:
#define INT int * INT p1, p2; // p1是指針,p2是一個(gè)int變量 typedef int * INT; INT p1, p2; // p1, p2都為指針 //--------------------------------------------------- #define LONG long unsigned LONG v1; // v1是一個(gè)無符號(hào)的long變量 typedef long LONG; unsigned LONG v1; // 錯(cuò)誤哦~~~ 
 

您可能感興趣的文章:

相關(guān)文章

  • C++ 如何實(shí)現(xiàn)多線程與線程同步

    C++ 如何實(shí)現(xiàn)多線程與線程同步

    多線程中的線程同步可以使用,CreateThread,CreateMutex 互斥鎖實(shí)現(xiàn)線程同步,通過臨界區(qū)實(shí)現(xiàn)線程同步,Semaphore 基于信號(hào)實(shí)現(xiàn)線程同步,CreateEvent 事件對(duì)象的同步,以及線程函數(shù)傳遞單一參數(shù)與多個(gè)參數(shù)的實(shí)現(xiàn)方式。
    2021-06-06
  • C++接口文件小技巧之PIMPL詳解

    C++接口文件小技巧之PIMPL詳解

    C++ 里面有一些慣用法(idioms),如 RAII,PIMPL,copy-swap、CRTP、SFINAE 等,今天要說的是 PIMPL,即 Pointer To Implementation,指向?qū)崿F(xiàn)的指針,感興趣的可以了解一下
    2023-06-06
  • 如何用C++制作LeetCode刷題小技巧-錯(cuò)題記錄本

    如何用C++制作LeetCode刷題小技巧-錯(cuò)題記錄本

    這篇文章主要介紹了如何用C++制作LeetCode刷題小技巧-錯(cuò)題記錄本的方法,需要的朋友可以參考下
    2021-04-04
  • C語言實(shí)現(xiàn)簡單的學(xué)生學(xué)籍管理系統(tǒng)

    C語言實(shí)現(xiàn)簡單的學(xué)生學(xué)籍管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單的學(xué)生學(xué)籍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C/C++中常用加密與解密算法的實(shí)現(xiàn)

    C/C++中常用加密與解密算法的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了一些在C++中常用的加密與解密算法,這其中包括Xor異或、BASE64、AES、MD5、SHA256、RSA等,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-11-11
  • C語言中new與malloc的區(qū)別詳解

    C語言中new與malloc的區(qū)別詳解

    這篇文章主要介紹了C語言中new與malloc的區(qū)別詳解,new是運(yùn)算符,可以用于動(dòng)態(tài)分配,如果想要撤銷內(nèi)存使用delete,new運(yùn)算符使用的一般格式為new類型,用new分配數(shù)組空間時(shí)不能指定初值,需要的朋友可以參考下
    2023-10-10
  • QT中進(jìn)程的創(chuàng)建實(shí)現(xiàn)

    QT中進(jìn)程的創(chuàng)建實(shí)現(xiàn)

    本文主要介紹了QT中進(jìn)程的創(chuàng)建實(shí)現(xiàn),詳細(xì)介紹了創(chuàng)建進(jìn)程的整個(gè)過程,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2023-08-08
  • 最新評(píng)論