Я получаю следующее предупреждение:
warning: left-hand operand of comma expression has no effect
Макросы определены ниже.Я компилирую с GCC (4.4.3) на Linux.Это код С.
#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; })
Как мне исправить их, чтобы избавиться от предупреждений?
[[Обновить]]
На самом делеЯ нашел причину предупреждения.Это не имеет ничего общего с самим макросом.Это потому, что я пытался найти минимум двух чисел, одним из которых был #def с именем MAXIMUM_ARRAYSIZE.Он был определен как:
#define MAXIMUM_ARRAYSIZE (sizeof(size_t)==2,16384,1073741824)
Это довольно странное макроопределение.