Global和File Scope有什么区别?

时间:2014-03-13 15:46:38

标签: c

我发现另一个包含一些信息的线程,但我仍然有点困惑。不过,我认为这是正确的。我认为全局范围和文件范围是一回事吗?

我的选项是本地/功能范围,全局范围,文件范围。 这是指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

4 个答案:

答案 0 :(得分:2)

  

我认为全局范围和文件范围是一回事吗?

文件范围意味着标识符仅为"已知"在它出现的特定文件中,例如main.c

全局范围意味着整个程序都可以看到它,无论它定义在哪个c文件中。

答案 1 :(得分:2)

File/global scope

  

如果标识符的声明出现在任何块之外,则名称具有文件范围。从声明它到翻译单元末尾的位置可以看到具有文件范围和内部链接的名称。

文件范围变量的行为与全局变量完全相同,不同之处在于它们的使用仅限于声明它们的文件

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文件时会出现这种情况。