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

基于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)因為這些原因, 在宏定義中, 經常會將語句序列放入 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) )
參考書籍: <<代碼閱讀方法與實踐>>

相關文章

  • C語言中關于scanf讀取緩存區(qū)的問題

    C語言中關于scanf讀取緩存區(qū)的問題

    scanf()函數是通用終端格式化輸入函數,它從標準輸入設備(鍵盤) 讀取輸入的信息,接下來通過本文給大家介紹C語言中關于scanf讀取緩存區(qū)的問題,需要的朋友一起看看吧
    2021-09-09
  • 嵌入式C語言查表法在項目中的應用

    嵌入式C語言查表法在項目中的應用

    今天小編就為大家分享一篇關于嵌入式C語言查表法在項目中的應用,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C++?Qt開發(fā)之運用QJSON模塊解析數據

    C++?Qt開發(fā)之運用QJSON模塊解析數據

    JSON(JavaScript?Object?Notation)是一種輕量級的數據交換格式,它易于人閱讀和編寫,也易于機器解析和生成,本文主要介紹了Qt如何運用QJson組件的實現對JSON文本的靈活解析功能,需要的可以參考下
    2024-01-01
  • C++ string替換指定字符實例代碼

    C++ string替換指定字符實例代碼

    這篇文章主要給大家介紹了關于C++ string替換指定字符的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C++具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-11-11
  • C++實現LeetCode(202.快樂數)

    C++實現LeetCode(202.快樂數)

    這篇文章主要介紹了C++實現LeetCode(202.快樂數),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • 深入解析C++中派生類的構造函數

    深入解析C++中派生類的構造函數

    這篇文章主要介紹了深入解析C++中派生類的構造函數,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • C++中的explicit關鍵字實例淺析

    C++中的explicit關鍵字實例淺析

    在C++程序中很少有人去使用explicit關鍵字,不可否認,在平時的實踐中確實很少能用的上,再說C++的功能強大,往往一個問題可以利用好幾種C++特性去解決。接下來給大家介紹 C++中的explicit關鍵字,需要的朋友可以參考下
    2017-03-03
  • Qt實戰(zhàn)之實現圖片瀏覽器

    Qt實戰(zhàn)之實現圖片瀏覽器

    這篇文章主要為大家詳細介紹了如何利用Qt實現簡易的圖片瀏覽器,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以了解一下
    2023-03-03
  • C語言實現堆排序的簡單實例

    C語言實現堆排序的簡單實例

    這篇文章主要介紹了C語言實現堆排序的簡單實例,講述了堆排序的原理,需要的朋友可以參考下
    2014-07-07
  • C語言每日練習之統(tǒng)計文本單詞數及高頻詞

    C語言每日練習之統(tǒng)計文本單詞數及高頻詞

    本文文大家準備了個C語言練習題:統(tǒng)計單詞數并找出頻率最高的單詞,文中的示例代碼講解詳細,對我們學習C語言有一定幫助,感興趣的可以了解一下
    2022-05-05

最新評論