Iqb*_*der 12 c c++ scope global-scope
我是学生,我对C和C++中的全局和文件范围变量感到困惑.这两种观点有什么不同吗?如果是,请详细说明.
Hit*_*ani 22
具有文件范围的变量可以由单个文件中的任何函数或块访问.要声明文件范围变量,只需在块之外声明一个变量(与全局变量相同),但使用static关键字.
static int nValue; // file scoped variable
float fValue; // global variable
int main()
{
double dValue; // local variable
}
Run Code Online (Sandbox Code Playgroud)
文件范围变量的行为与全局变量完全相同,只是它们的使用仅限于声明它们的文件.
当实际上有多个翻译单元时,说明文件(或更准确地说,翻译单元)范围与全局范围可能更清楚......
取 2 个文件(每个文件都是它自己的翻译单元,因为它们不包含彼此)
其他.cpp
float global_var = 1.0f;
static float static_var = 2.0f;
Run Code Online (Sandbox Code Playgroud)
主程序
#include <cstdio>
extern float global_var;
//extern float static_var; // compilation error - undefined reference to 'static_var'
int main(int argc, char** argv)
{
printf("%f\n", global_var);
}
Run Code Online (Sandbox Code Playgroud)
因此区别很明显。
file scope如果标识符的声明出现在任何块之外,则名称具有。具有文件范围和内部链接的名称从声明点到翻译单元末尾都是可见的。
Global scopeorglobal namespace scope是程序最外层的命名空间范围,可以在其中定义对象、函数、类型和模板。如果标识符的声明出现在所有块、命名空间和类之外,则名称具有全局命名空间范围。
例子:
static int nValue; // file scoped variable
float fValue; // global variable
int main()
{
double dValue; // local variable
}
Run Code Online (Sandbox Code Playgroud)
在这里阅读更多内容。
| 归档时间: |
|
| 查看次数: |
19715 次 |
| 最近记录: |