What is assumed to be the preferred way to fix “comparison between signed and unsigned integer” warnings safely? In my case I have to compare some uint_32 variables with #define constants.
Really simplified:
#define MAX(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })
#define c (10)
unsigned int d = 11;
if(MAX(c,d)>10){
//...
}
But I have really a lot of such cases – what would you suggest to solve this?
In this case, you can just change your constant to be unsigned as well:
or alternatively, use a cast so that the
typeofin your macro creates anunsignedvariable: