[ fromfile: globals.xml id: constglobals ]
The scope of const
global variables is slightly different from the scope of regular globals.
A global object that has been declared const
has file scope, by default.
Unlike static objects declared outside of all blocks, it is possible to export a global const
to other files by declaring it extern
at the point where it is initialized.
For example, in one file, you could have the code in Example 20.8.
Example 20.8. src/const/globals/chunk1.cpp
const int NN = 10; // file scope const int MM = 44; // file scope extern const int QQ = 7; // can be accessed from other files int main() { // NN = 12; // error int array[NN]; // okay // QQ++; // error double darray[QQ]; return 0; }
<include src="src/const/globals/chunk1.cpp" href="src/const/globals/chunk1.cpp" mode="cpp" id="gcchunk1"/>
In another file, you might have the code in Example 20.9
Example 20.9. src/const/globals/chunk2.cpp
extern const int NN = 22; // a different constant extern const int MM; // error // declare global constant - storage allocated elsewhere extern const int QQ; // external declaration void newFunction() { int x = QQ + NN; }
<include src="src/const/globals/chunk2.cpp" href="src/const/globals/chunk2.cpp" mode="cpp" id="gcchunk2"/>
Example 20.9 has a const int NN
that is separate and distinct from the const
with the same name in Example 20.8.
Example 20.9 can share the use of the const int QQ
because of the extern
modifier.
Example 20.9 cannot access the file scope const MM
by declaring MM
with the extern
modifier.
Generated: 2012-03-02 | © 2012 Alan Ezust and Paul Ezust. |