We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Can anyone tell me why this piece of code builds with error 143, and how to get it to build without errors?
typedef unsigned char U8; typedef unsigned long int U32; #define B0(x) ((U8) ((U32)x&0xFF)) #define B1(x) ((U8)(((U32)x&0xFF00)>>8)) #define B2(x) ((U8)(((U32)x&0xFF0000)>>16)) #define B3(x) ((U8)(((U32)x&0xFF000000)>>24)) void foo(void); BYTE abc[]={ B0(foo), B1(foo), B2(foo), B3(foo) }; void foo(void){ }
"initializer is not a constant" It often pays to simply read the text of an error message out loud - it is telling you exactly what Drew has been saying! The value of foo is not known at compile time; thus it is not a constant!