[vox-tech] C question: global vs local const
Ken Bloom
vox-tech@lists.lugod.org
Thu, 17 Jan 2002 16:47:48 -0800
> ---- ORIGINAL MESSAGE ----
> Date: Thu, 17 Jan 2002 15:04:38 -0800
> To: vox-tech@lists.lugod.org
> From: Peter Jay Salzman <p@dirac.org>
> Subject: [vox-tech] C question: global vs local const
> Reply-To: vox-tech@lists.lugod.org
>
> 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?
do you have a more thorough piece of demonstration code for what you're trying to do. Both of
these pieces of code, as written, should initialize K and ratio to the value of 2.0, and
should both do so without compiler warnings or compiler errors. (I may be wrong, assigning
2.0L to a double in any circumstance may cause warnings to be emitted. Try just assigning 2.0)
However:
/////////BEGIN
extern const double ratio = 2.0L;
extern const double K = ratio;
int main(void)
{
return 0;
}
/////////END
is illegal, because the extern declaration implies that the variable has been defined in
another file.
also, putting another assignment statement like K=4.0; right before the return 0; should be
illegal in both cases.