> ---- ORIGINAL MESSAGE ----
> Date: Thu, 17 Jan 2002 15:04:38 -0800
> To: [EMAIL PROTECTED]
> From: Peter Jay Salzman <[EMAIL PROTECTED]>
> Subject: [vox-tech] C question: global vs local const
> Reply-To: [EMAIL PROTECTED]
> 
> 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.
_______________________________________________
vox-tech mailing list
[EMAIL PROTECTED]
http://lists.lugod.org/mailman/listinfo/vox-tech

Reply via email to