最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于C中含有if的宏定義詳解

 更新時間:2013年05月28日 08:56:27   作者:  
本篇文章是對C中含有if的宏定義進行了詳細的分析介紹,需要的朋友參考下
含有if的宏定義
當宏定義中含有 if 時
1) 定義如下宏
#define DC(p) if( foo(p) )fun(p)
用在下面的環(huán)境中
if(k>n)
DC(k);
else
DC(n);
宏替換后,如下
if(k>n)
if( foo(k) )
fun(k);
else
if( foo(n) )
fun( n );
可見, 原來的 if 和 else 不再配對.
2) 為了避免這類問題, 我們可以將包含if語句的宏定義為一個整體.
#define DC(p) {if( foo(p) ) fun(p);}
但是, 替換后變?yōu)?BR>if(k>n)
{
if( foo(k) )
fun(k);
};else ...
由于else前面多了個分號, 編譯時會提示錯誤沒有與else配對的if.
3)因為這些原因, 在宏定義中, 經(jīng)常會將語句序列放入 do{...}while(0)塊中.
如下
#define DC(p) do{( if( foo(p) ) fun(p); }while(0)
替換后
if(k>n)
do
{
if( foo(k) )
fun(k);
}while(0);
else
...
程序可以正常運行
4)替換方案
a)采用 ? : 表達式
#define DC(p) ( (foo(p)) ? (fun(p)):0)
b)利用布爾運算的短路徑求值屬性
#define DC(p) ( (foo(p)) && (fun(p), 1) )
參考書籍: <<代碼閱讀方法與實踐>>

相關文章

  • VSCODE+cmake配置C++開發(fā)環(huán)境的實現(xiàn)步驟

    VSCODE+cmake配置C++開發(fā)環(huán)境的實現(xiàn)步驟

    這篇文章主要介紹了VSCODE+cmake配置C++開發(fā)環(huán)境的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • C++11運算符重載和向量類重載實例詳解(<<,>>,+,-,*等)

    C++11運算符重載和向量類重載實例詳解(<<,>>,+,-,*等)

    這篇文章主要給大家介紹了關于C++11運算符重載和向量類重載的相關資料,主要包括<<,>>,+,-,*等,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-07-07
  • C++如何實現(xiàn)簡單的計時器詳解

    C++如何實現(xiàn)簡單的計時器詳解

    因為最近閑著無聊就想著要不用C++寫點什么東西,仔細想了想其實自己的C++學的也不怎么好,寫個簡單的計時器吧!所以下面這篇文章主要介紹了利用C++如何實現(xiàn)簡單的計時器,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • C++中將string類型轉(zhuǎn)化為int類型

    C++中將string類型轉(zhuǎn)化為int類型

    本文主要介紹了C++中將string類型轉(zhuǎn)化為int類型的方法。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • C++詳細講解圖論的基礎與圖的儲存

    C++詳細講解圖論的基礎與圖的儲存

    圖論〔Graph?Theory〕是數(shù)學的一個分支。它以圖為研究對象。圖論中的圖是由若干給定的點及連接兩點的線所構成的圖形,這種圖形通常用來描述某些事物之間的某種特定關系,用點代表事物,用連接兩點的線表示相應兩個事物間具有這種關系
    2022-05-05
  • 詳解C++ bitset用法

    詳解C++ bitset用法

    這篇文章主要介紹了C++ bitset用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • Win32下C++實現(xiàn)快速獲取硬盤分區(qū)信息

    Win32下C++實現(xiàn)快速獲取硬盤分區(qū)信息

    這篇文章主要為大家詳細介紹了Win32下C++如何實現(xiàn)快速獲取硬盤分區(qū)信息,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-03-03
  • 基于QT制作一個TCPServer與TCPClient的通信

    基于QT制作一個TCPServer與TCPClient的通信

    這篇文章主要為大家詳細介紹了如何基于QT制作一個TCPServer與TCPClient的通信,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • C++與Qt的內(nèi)存管理機制詳解

    C++與Qt的內(nèi)存管理機制詳解

    這篇文章主要介紹了C++與Qt的內(nèi)存管理機制使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • C?C++輸入輸出基礎教程示例詳解

    C?C++輸入輸出基礎教程示例詳解

    當我們在網(wǎng)站做題的時候經(jīng)常會遇到各種要求的輸入輸出,而且會有時間超限等多個問題,這時我們就要優(yōu)化我們的輸入輸出或者規(guī)范我們的輸入輸出格式,下面介紹C和C++中的輸入輸出問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-11-11

最新評論

吐鲁番市| 剑阁县| 伊金霍洛旗| 芒康县| 五华县| 崇礼县| 太仓市| 蒙自县| 霍山县| 饶河县| 衡东县| 卫辉市| 通道| 汝阳县| 高台县| 兴山县| 晋城| 姜堰市| 南华县| 镇远县| 古浪县| 开原市| 高陵县| 客服| 台中县| 眉山市| 徐州市| 全州县| 青阳县| 静宁县| 巧家县| 泗洪县| 本溪市| 孝昌县| 凌云县| 陇川县| 辽阳市| 鄄城县| 宾阳县| 河西区| 林口县|