我注意到,有時,C宏被寫成這樣:有關`({});`在C中的更多信息?
#define foo(bar) ({ ++bar; })
一些實驗後,我發現:
({});
會編,卻又無可奈何。 (如預期)- 關閉
;
將導致語法錯誤。這樣做的副作用是確保foo()在代碼中看起來像一個函數。 (雖然,如果將分號關閉,那麼錯誤對於診斷問題並不是很有用!) return ({});
抱怨不會被忽略的空值,就像我試圖使用void函數一樣。
這是爲了讓開發人員在他們的宏中添加一個分號,還是有另一個目的?我試過谷歌,但它標點符號失敗。有沒有這個名字?
古代 - 但語法仍支持4.4.2。 – 2010-01-16 08:14:38