gpt4 book ai didi

c - C 中的 static 关键字和外部变量

转载 作者:行者123 更新时间:2023-11-30 20:22:48 25 4
gpt4 key购买 nike

我有以下代码段,在代码中需要使用它们的位置之后定义了几个外部(全局)变量。为此,我使用关键字 extern 来声明它们,而不为它们保留存储空间。

int main(int argc,char *argv[])
{

extern int a;
extern double b;

/* ...use the variables somehow... */

{

int a = 10;
static double b = 2.0;

如果我这样做,编译器会提示我将 b 变量定义为静态(因此具有内部链接),而在我将其声明为 extern 之前。但是如果我反转顺序并在使用它之前定义它并在 main 中声明它(我知道这是可选的......)一切都很好。

static double b = 2.0;

int main(int argc,char *argv[])
{

extern int a;
extern double b;

/* ...use the variables somehow... */

{

int a = 10;

如果我想在定义外部私有(private)变量(即具有内部链接)之前使用它怎么办?是否被禁止以及为什么?

最佳答案

extern 关键字告诉编译器我们引用的变量位于不同的翻译单元(基本上是另一个源文件),而 static 关键字意味着变量(对于全局变量)是当前翻译单元的本地变量,在其他源文件中看不到,因此将两个关键字一起使用是没有意义的。

一旦您在同一个文件中将 b 声明为全局变量,它就在 main 中可见,无需再次声明,你就可以使用它。另一方面,如果它在不同翻译单元中声明为全局变量,则extern关键字就变得必要。

关于c - C 中的 static 关键字和外部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38375052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com