我发现另一个包含一些信息的线程,但我仍然有点困惑。不过,我认为这是正确的。我认为全局范围和文件范围是一回事吗?
我的选项是本地/功能范围,全局范围,文件范围。 这是指C,如果这有所不同。
QUESTION MY ANSWER
1) external static variables file scope
2) internal static variables local scope
3) global functions global scope
4) global variables global scope
5) local variables local scope
6) formal parameters local scope
7) static functions file scope
答案 0 :(得分:2)
我认为全局范围和文件范围是一回事吗?
文件范围意味着标识符仅为"已知"在它出现的特定文件中,例如main.c
。
全局范围意味着整个程序都可以看到它,无论它定义在哪个c
文件中。
答案 1 :(得分:2)
如果标识符的声明出现在任何块之外,则名称具有文件范围。从声明它到翻译单元末尾的位置可以看到具有文件范围和内部链接的名称。
文件范围变量的行为与全局变量完全相同,不同之处在于它们的使用仅限于声明它们的文件。
static int foo1; // file scoped variable
float foo2; // global variable
int main(){
...
}
答案 2 :(得分:1)
如果标识符的声明出现在任何块之外,则名称具有文件范围。从声明它到翻译单元末尾的位置可以看到具有文件范围和内部链接的名称。
全局范围或全局命名空间范围是程序的最外层命名空间范围,可以在其中定义对象,函数,类型和模板。如果标识符的声明出现在所有块,名称空间和类之外,则名称具有全局名称空间范围。
答案 3 :(得分:1)
c中的静态函数得到file scope
,即它只能在定义它的文件中使用。其中global scope
表示甚至可以从其他C文件中调用该函数
所以file scope
意味着你只能在那个C文件中使用该功能。和global scope
表示可以从其他C文件中调用该函数。在编译创建可执行文件时合并2个C文件时会出现这种情况。