From: Jan S. <jan...@al...> - 2012-07-24 22:53:36
|
Apparently the problem is when this code gets heapified by CIL. GCC 4.6 accepts this code at function scope but not at file scope. Thanks for your answers. - Jan On 24/07/2012 11:00, Oliver Schwahn wrote: > Hi, > I also think that this is invalid C code. Initializers for static local > variables have to be constant values. Variables with const modifier are > not considered a constant value in this context (at least not by gcc, > not sure what the standard says). > > So, the following code does also NOT work... > const unsigned short a = 22; > static unsigned short b = a - 1; /* a is not seen as constant value by > gcc */ > > The message "error: initializer element is not constant" is in fact a > gcc error message stating exactly that. > > If you want to use a declared constant in such case, you can write > something like... > enum {a = 22}; > static unsigned short b = a - 1; /* now a is a constant int value and > the expression is folded to 21 */ > > > The integer promotion you noticed is because of the used integer > constant for arithmetics in "a - 1". Since "1" is a signed integer, "a" > has to be promoted to a signed integer in order to compute the minus. > > Cheers > Oliver > > > 24.07.2012 07:48, Gabriel Kerneis: >> On Mon, Jul 23, 2012 at 05:45:06PM +0200, Jan Smets wrote: >>> Is this a valid coding error or a bug in cil ? >>> static const unsigned short b = a - 1; >> This is a coding error (or at least gcc refuses to compile it). >> Not sure about the integer promotion, though. >> > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > CIL-users mailing list > CIL...@li... > https://lists.sourceforge.net/lists/listinfo/cil-users |