This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: multiple declaration / definition


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




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]