------- Additional Comments From hchapman-gcc-bugs at 3gfp dot com 2005-05-19 15:09 ------- gcc has this problem as well. Although, it will let you have an expression using only constants like
case 'A' + ('B'<<8):
but not
case *((uint16_t *)"AB"):
A gcc example:
#include <stdio.h>
int main()
{
unsigned int xxx = 0x3456;
switch(0x34)
{
case ((int)(xxx >> 16)):
printf("Shift\n");
break;
default:
printf("No shift\n");
break;
}
return(0);
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21540
