我收到以下警告:如何修复这些MIN,MAX宏?
warning: left-hand operand of comma expression has no effect
的宏定义如下。我正在Linux上编译GCC(4.4.3)。这是C代码。
#define MY_MAX(a,b) \
({ __typeof__ (a) _a = (a); \
__typeof__ (b) _b = (b); \
_a > _b ? _a : _b; })
#define MY_MIN(a,b) \
({ __typeof__ (a) _a = (a); \
__typeof__ (b) _b = (b); \
_a < _b ? _a : _b; })
如何修复它们以摆脱警告?
[更新]
其实,我找到了警告的原因。它与宏观本身无关。这是因为我试图找到两个数字的最小值,其中之一是一个名为MAXIMUM_ARRAYSIZE的#def。它被定义为:
#define MAXIMUM_ARRAYSIZE (sizeof(size_t)==2,16384,1073741824)
这是一个很奇怪的宏定义。
你能显示来电所在部位报警被触发? (标记为GCC,宏使用GCC扩展。) – Mat 2012-01-07 15:09:54
请问[this](http://stackoverflow.com/questions/3437404/min-and-max-in-c)有帮助吗? – 2012-01-07 15:12:33
我在代码中看不到一个逗号。所以我想这个问题出现在使用宏的代码中(可能包含一个逗号),而不是宏本身。 – ugoren 2012-01-07 15:23:10