Hacker News new | ask | show | jobs
by khedoros1 3410 days ago
C's variable definition rules are different from C++'s. gcc happily compiles those two lines, g++ exits with the "redefinition" error.
2 comments

Yes, in C a plain

  int i;
at file scope is a tentative definition - if, by the end of the compilation unit, no definition has been seen, one of them will become a definition, otherwise it is just a declaration.

On the other hand, this:

  int i = 0;
is a definition, and you can't have two of those.
That was unexpected.
Said every C programmer ever!