[cfe-dev] why do i get the "c++11-narrowing" warning only in switch using defines?

Dennis Luehring dl.soluz at gmx.net
Mon May 11 02:23:18 PDT 2015


#define TEST0 0xFFFA0000
#define TEST1 0xFFFA0001

const int test0 = 0xFFFA0000;
const int test1 = 0xFFFA0001;

int main(int argc, char** arcv)
{
   if(argc == TEST0) // OK
   {
     return 1;
   }

   if(argc == test0) // OK
   {
     return 1;
   }

   switch(argc)
   {
     case TEST1: return 2; // ERROR: case value evaluates to 4294574081, 
which cannot be narrowed to type 'int' [-Wc++11-narrowing]
   }

   switch(argc)
   {
     case test1: return 2; // OK
   }
}



More information about the cfe-dev mailing list