Re: gcc: why is "abcdef"[3] not a constant (error: initializer element is not constant)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 05/11/2015 09:02 AM, m-h-l wrote:

> sorry, it was not my intention to complain about gcc and I never said it's a
> defect.

OK, I too am sorry for being rude.  I thought your question rather
aggressive, which it clearly was not intended to be.  Mea culpa.  I
should not assume the worst.

> I thought this is a help forum and so I thought I can get a hint or
> trick how to work-around this. I really like gcc and you make a
> great job with it.
> 
> I just did not understand the idea behind this restriction. Perhaps
> there is a good reason (beside the standard) for this.

I don't think there is.  There has to be some limit on how far to do
constant propagation.  This limit is necessarily arbitrary: there is
no obvious point at which to say "this far, and no further."

The need for a limit is especially true when the compiler is at -O0,
with all optimizations turned off.  There have to be rules about what
expressions must be evaluated as constant expressions because we can
use a constant expression as a key in a switch statement.  Is it
reasonable, then, to expect a simple C compiler always to look through
all complex expressions at compile time?  Where would you stop?

The point I'm making is this: there is no one true answer.  The
standard makes a cut.

Andrew.




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux