•
•
•
•
What is DaniWeb IT Discussion Community?
You're currently browsing the C++ section within the Software Development category of DaniWeb, a massive community of 397,589 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 2,996 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our C++ advertiser:
Views: 3457 | Replies: 1
![]() |
•
•
Join Date: Dec 2004
Location: Allentown, PA
Posts: 60
Reputation:
Rep Power: 4
Solved Threads: 1
I have a question on external variables in a multifile program.
Quoting from K&R (first addition, page 72)
"By default, external variables are also "global", so that all references to such a variable by the same name (even from functions compiled separately) are references to the same thing."
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. If the line "int a" is added to
file 2 it compiles and runs, giving the wrong answer 0. 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)?
Does anyone have any insights to offer?
_____________________file 1____________________________
________________file 2____________________________
Quoting from K&R (first addition, page 72)
"By default, external variables are also "global", so that all references to such a variable by the same name (even from functions compiled separately) are references to the same thing."
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. If the line "int a" is added to
file 2 it compiles and runs, giving the wrong answer 0. 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)?
Does anyone have any insights to offer?
_____________________file 1____________________________
#include <iostream>
using namespace std;
int a=6;
int f(int);
main()
{ cout << f(2) << endl;
}int f(int x)
{ return (a*x);
}•
•
•
•
Originally Posted by murschech
Does anyone have any insights to offer?
•
•
•
•
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.
•
•
•
•
Originally Posted by murschech
If the line "int a" is added to file 2 it compiles and runs, giving the wrong answer 0.
•
•
•
•
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)?
[aside]Using K&R1 as a reference for C++98 seems to leave room for a number of gaps.[/aside]
![]() |
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
•
•
•
•
•
•
•
•
DaniWeb C++ Marketplace
Similar Threads
- Program that Evaluates lowest cost (VB.NET)
- C++ nest loop program - Help (C++)
- Using data i read from *.* files (C++)
- Simple C++ program terminate prematurely (C++)
- what is "unresolved external..."??? (C)
Other Threads in the C++ Forum
- Previous Thread: Problem with Character Arrays
- Next Thread: HELP With functions



Linear Mode