Originally Posted by murschech
Does anyone have any insights to offer?
I'll try.
Originally Posted by murschech
Here's an example that doesn't work. The variable 'a' in file 1 is external (since it's defined outside of any function) so, according to the above paragraph, it should have the same value in file 2. The program, however, doesn't compile.
As it shouldn't. Identifiers need to be declared. The linkage of an identifier is a bit separate.
Originally Posted by murschech
If the line "int a" is added to file 2 it compiles and runs, giving the wrong answer 0.
I get a linker error because adding this definition conflicts with the definition in the other file.
Originally Posted by murschech
If instead the line "extern int a" is added then it runs and gives the correct answer 12. I understand why the last version works, but shouldn't the first one also (according to K&R)?
I'll borrow Chris Torek's words of wisdom: "At file scope, 'extern' means, approximately, 'read this as a declaration, not a definition'".
[aside]Using K&R1 as a reference for C++98 seems to leave room for a number of gaps.[/aside]