[vox-tech] C question: global vs local const

Mark K. Kim vox-tech@lists.lugod.org
Thu, 17 Jan 2002 15:54:05 -0800 (PST)


You're initializing K with a variable.  Because globals are calculated at
compile time, you cannot have variables in the initialization of globals
(since a variable's value is not determined until runtime).  And yes,
const variables are still variables, and const variables are overwritable
under certain architectures by indirectly dereferencing it (but not on x86
Linux).

-Mark

On Thu, 17 Jan 2002, Peter Jay Salzman wrote:

> when ratio and K are defined externally, gcc complains about a
> non-constant initializer:
>
>    const double ratio = 2.0L;
>    const double K = ratio;
>
>    int main(void)
>    {
>       return 0;
>    }
>
> however, when defined as local variables, there's no problem.
>
>    int main(void)
>    {
>       const double ratio = 2.0L;
>       const double K = ratio;
>
>       return 0;
>    }
>
> why isn't const being honored for the global variable version?
>
> pete
> _______________________________________________
> vox-tech mailing list
> vox-tech@lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech
>

--
Mark K. Kim
http://www.cbreak.org/mark/
PGP key available upon request.