我收到以下警告:如何修復這些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