do while 0 巨集的作用的定義

2021-09-07 00:14:50 字數 688 閱讀 6183

看到開放源**,巨集定義經常這樣用

#define	some()					

do while (0)

為什麼這樣用?

能夠試一下。假如乙個普通巨集定義

#define some(x) fun1(x);fun2(x)

if(condition)

some(x);

變為

if(condition)

fun1(x);

fun2(x);

這樣直接加個花括號不久行了,為什麼還用do......while()?假如加上花括號

#define some(x)

if(condition)

some(x);

else

someelse(x);

變為

if(condition)

;//多了個分號

else

someelse(x);

因此巨集定義中使用do...while(0)能夠確保無論在**中怎麼使用巨集定義。它總是正確的。

do while 0 在巨集定義中的作用

如果你是一名c程式設計師,你肯定熟悉巨集,它們非常的強大,如果正確使用可以讓你的工作事半功倍。然後,如果你在定義巨集時,很隨意沒有認真檢查,那麼它們可能使得你發狂,浪費n多時間。在很多c程式中,你可能看到許多看起來不是那麼直接的較為特殊的巨集定義。下面就是乙個例子 1 define set taks...

巨集定義中的do while 0

如果你是c 程式設計師,我有理由相信你用過,或者接觸過,至少聽說過mfc,在mfc的afx.h檔案裡面,你會發現很多巨集定義都是用了do.while 0 或do.while false 比如說 define afxassume cond do while 0 粗看我們就會覺得很奇怪,既然迴圈裡面只執...

巨集定義中的do while 0

我們都知道do while迴圈,但是在巨集定義中常常會出現dowhile 0 的用法,這樣的迴圈不是只執行一次嗎?不用do while也可以實現相同的功能呀,那麼為什麼要使用dowhile 0 呢?我們先來分析幾個例子 define fun x func1 x func2 x if true fun...