multiple declaration / definition
Ingo Krabbe
ikrabbe@earthling.net
Tue Jul 10 02:09:00 GMT 2001
On 10 Jul 2001, Aparna Ranish wrote:
> Hi
>
> I have a small piece of code which according to me should give a compilation error.
>
>
> test.c
> ----------
> int i = 2;
> int i;
> int main ()
> {
> return 0;
> }
> See according to me <int i> gives both declaration and definition for i. So, the program should give multiple definition error. But it does not.
>
> Once the definition is over does it take <int i>
> as declaration ??
>
>
> another test
> ----------------
>
> int main ()
> {
> int i = 2;
> int i;
> return 0;
> }
> But in this case it gives redclaration error.it says i previously declared here.
> Actually it is supposed to give the error in both the
> cases.
>
> Can some body expalin me, where I am going wrong ??
You have to read it as
extern int i;
int i = 2;
which could be found for global variables in header files. Making it static
static int i;
int i = 2;
gives you the "desired" error.
But shouldn't it be static by default ?
CU INGO
More information about the Gcc-help
mailing list