原文:C語言中宏定義(#define)時do{}while(0)的價值

最近在新公司的代碼中發現到處用到do ... while ,google了一下,發現Stack Overflow上早有很多討論,總結了一下討論,加上自己的理解,do ... while 的價值主要體現在: . 增加代碼的適應性 下面的宏定義沒有使用do ... while 這樣宏定義,單獨調用不會出現問題,例如: 宏擴展后變成: foo x bar x 這樣調用FOO沒有任何問題,但是FOO x ...

2015-12-28 17:00 2 6324 推薦指數:

查看詳情

【轉】C語言中DEFINE簡介及多行定義

要寫好C語言,漂亮的定義是非常重要的。定義可以幫助我們防止出錯,提高代碼的可移植性和可讀性等。   在軟件開發過程中,經常有一些常用或者通用的功能或者代碼段,這些功能既可以寫成函數,也可以封裝成為定義。那么究竟是用函數好,還是定義好?這就要求我們對二者進行合理的取舍。   我們來看一個 ...

Wed Nov 23 05:08:00 CST 2016 0 5021
c語言定義#define

1. 利用define定義 數值常量   #define 定義是個演技非常高超的替身演員,但也會經常耍大牌的,所以我們用它要慎之又慎。它可以出現在代碼的任何地方,從本行定義開始,以后的代碼就就都認識這個了;也可以把任何東西定義。因為編譯器會在預編譯的時候用真身替換替身,而在 ...

Tue Nov 06 05:36:00 CST 2018 0 701
C語言中do...while(0)的妙用

在linux內核代碼中,經常看到do...while(0)的do...while(0)有很多作用,下面舉出幾個: 1、避免goto語句: 通常,如果一個函數開始要分配一些資源,然后如果在中途遇到錯誤則要退出函數,當然,退出前要釋放資源,我們的代碼 ...

Fri Oct 25 21:51:00 CST 2013 12 8429
C語言#define拼接定義實現

今天為大家分享一篇C語言#define拼接定義實現方式,具有很好的參考價值,希望對大家有所幫助。 使用場合:拼接兩個,一個是傳入的。 遇到問題:普通的拼接定義,對於“傳入的”不會被替換,反而原封不動的接了上去。 解決方法:經過試驗以及網上查閱,以下方法即可以解決上述問題 ...

Sun Oct 25 00:23:00 CST 2020 0 865
c語言定義#define的理解與資料整理

1. 利用define定義 數值常量   #define 定義是個演技非常高超的替身演員,但也會經常耍大牌的,所以我們用它要慎之又慎。它可以出現在代碼的任何地方,從本行定義開始,以后的代碼就就都認識這個了;也可以把任何東西定義。因為編譯器會在預編譯的時候用真身替換替身,而在 ...

Sat Apr 05 17:17:00 CST 2014 6 52307
do {...} while (0) 在定義中的作用

如果你是一名C程序員,你肯定很熟悉,它們非常強大,如果正確使用可以讓你的工作事半功倍。然而,如果你在定義很隨意沒有認真檢查,那么它們可能使你發狂,浪費N多時間。在很多的C程序中,你可能會看到許多看起來不是那么直接的較特殊的定義。下面就是一個例子: #define ...

Tue Jan 28 22:00:00 CST 2014 12 30560
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM