The article at [1] reports about an issue with the MIN and MAX macros
that cause double evaluation by default. I think the more general issue
is worth checking for, please add a check for double evaluation when
using macros. Here is a test case from [1], the warning should trigger
on the second use of the min macro but not the first.
#include <stdio.h>
#define min(a, b) ((a) < (b)) ? (a) : (b)
int main() {
int a = 1, b = 2;
printf ("%d\n", min (a, b));
printf ("a=%d, b=%d\n\n", a, b);
printf ("%d\n", min (a++, b++));
printf ("a=%d, b=%d\n\n", a, b);
}
1. http://dustri.org/b/min-and-max-macro-considered-harmful.html