繁体   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