gpt4 book ai didi

c - c 结构在其成员之间有作用域吗?

转载 作者:行者123 更新时间:2023-11-30 17:28:38 25 4
gpt4 key购买 nike

例如:

struct foo
{
/* Scope? */
int a;
int b;

};

这个结构体内有作用域吗?b 知道 a 存在吗?

最佳答案

没有。正如6.2.1/2所说,C语言只有文件作用域、函数作用域、 block 作用域和原型(prototype)作用域。 C 中没有其他作用域。

结构类型不会创建作用域。例如,在 {} 之间声明的任何新类型都将属于封闭范围。例如。如果您在文件范围内声明此内容

 struct foo
{
struct bar
{
int x;
} b;
} a;

那么“嵌套”struct bar 类型定义也将属于文件范围。 IE。您将能够立即使用

struct bar b;

在文件范围内。该 struct bar 将引用上面的“嵌套”struct bar 类型定义(本质上意味着它并不是真正的“嵌套”)。

另请注意,C 语言有一个 namespace 的概念,其中放置了不同类型的标识符,并在其中查找它们。每个结构类型都有自己的命名空间,结构成员的名称被放置在其中。然而, namespace 的概念与范围的概念不同,尽管它们协同工作。

不清楚“b 是否知道a 存在”是什么意思。 C 语言没有为您提供任何方法来编写依赖于 b “知道”和“不知道”什么的代码。这让你的问题毫无意义。

关于c - c 结构在其成员之间有作用域吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25986382/

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