我知道static
在C中是一个重载的关键字.在这里,我只关心它作为一个关键字用来强制内部链接.
如果在.c
文件中声明了全局变量,则使用static
和不使用之间有什么区别static
?无论哪种方式,没有其他.c
文件可以访问变量,因此该变量基本上是文件的"私有",有或没有static关键字.
例如,如果我有一个文件foo.c
,并且我声明了一个全局变量:
int x = 5;
该变量x
仅对内部代码可用foo.c
(除非我在一些带有extern
关键字的共享头文件中声明它).但是如果我没有在头文件中声明它,那么如果我输入的话会有什么不同:
static int x = 5
.
无论哪种方式,它似乎x
都有内部联系.所以我static
对这方面的目的感到困惑.
sbi*_*sbi 12
如果在
.c
文件中声明了全局变量,则使用static
和不使用之间有什么区别static
?无论哪种方式,没有其他.c
文件可以访问变量[...]
另一个文件可以声明 x
:
extern int x;
Run Code Online (Sandbox Code Playgroud)
这将允许代码引用x
进行编译,然后链接器会愉快地将这些引用链接到x
它找到的任何引用.
static
通过防止x
在其翻译单元外部可见来防止这种情况.
只有一个"命名空间",可以这么说,在C.没有"static"关键字,您不会使用名称"x"保护其他文件(即使您没有在自己的库的标题中显示它).
尝试将包含非静态变量的几个C文件链接在一起x
(对每个文件中的函数进行交错读写访问),并将这些变量声明为静态的情况进行比较.
归档时间: |
|
查看次数: |
4793 次 |
最近记录: |