簡體   English   中英

如何定義一個 C 宏表達式?

[英]How to define a C macro expression?

如何在 C 中定義宏表達式,其 arguments 也是表達式?

我要解決的問題是如何編寫一個表達式MAX(X,Y) ,它接受表達式XY (例如x++x+2 )並返回兩者中的最大值。 此表達式應定義為預處理器宏。

來自相關帖子的回答:

#define MAX(a, b) ((a) > (b) ? (a) : (b))

並且我知道x++在宏中涉及的風險(可以評估兩次)。

親切的問候

通過使用特定的表達式構造,GCC 可以做到這一點,請參閱: 表達式中的語句和聲明

這是一個例子:

#define INTMAX(A, B) ({ int _a = (A), _b = (B) ; _a > _b ? _a : _b ; })

如果您不知道 arguments 的類型,可以使用typeof代替int

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM