C語言中的 void 0 與 void 0

2021-07-04 15:38:16 字數 527 閱讀 2196

前幾天看到乙個巨集, 它大概是這樣的:

#define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__file__, __line__))

**的含意簡單, 關鍵是那個 (void)0 的用法, 我還是第一次見到

我用 void 的時候, 有兩種情況:

1.放到函式前面, 強調函式沒有返回值, 也就是說函式不能作右值

如: void fun(int x);

2.放到函式形參裡面, 強調函式無任何引數

如: int fun(void);

還有一種用法是:

#define null ((void*)0)

當然, 這就是null空指標的定義方式(在 stdlib.h 裡面).

可, 上面巨集的 (void)0 , 一開始確實讓我覺得有點奇怪, 不知道幹嘛的, 平靜下來, 想了想.

原來, 巨集裡面這樣用的目的是防止該巨集被用作右值, (void)0 本身也不能作右值, 因為 void 非實際的型別!

C語言中的 void 0 與 void 0

前幾天看到乙個巨集,它大概是這樣的 define assert param expr expr void 0 assert failed u8 file line 的含意簡單,關鍵是那個 void 0 的用法,我還是第一次見到 別笑 我用 void 的時候,有兩種情況 1.放到函式前面,強調函式沒有...

函式指標 void 0

在很多情況下,尤其是讀別人所寫 的時候,對 c語言宣告的理解能力變得非常重要,而c語言本身的凝練簡約也使得c語言的宣告常常會令人感到非常困惑,因此,在這裡我用一篇的內容來集中闡述一下這個問題。問題 宣告與函式 有一段程式儲存在起始位址為 0的一段記憶體上,如果我們想要呼叫這段程式,請問該如何去做?答...

原始碼學習之void 0

今天看原始碼的時候看到void 0這樣的寫法,平時在業務 裡基本沒有這樣的寫法,於是學習了一下。在控制台執行了一下void 0,得到返回值是undefined。在mdn上搜了一下void,了解到 以vue的原始碼為例 var createemptyvnode function text 這段 用於建...