嵌套结构名称可见性
Posted
技术标签:
【中文标题】嵌套结构名称可见性【英文标题】:nested structure name visibility 【发布时间】:2013-06-22 07:06:14 【问题描述】:不知道下面的C代码是否有效:
struct A
struct B
int value;
b;
;
struct B;
void func1(struct B* b)
b->value = 42;
void func2()
struct A a;
func1(&a.b);
此代码使用 gcc 编译并按预期工作,而代码检查器抱怨,我想知道谁是正确的,以及这是否可以被标准(C90 或 C99)接受,以这种形式引用 struct B
。
【问题讨论】:
忽略嵌套,A a;
不应该编译。它必须是struct A a;
。随着这一变化,MSVC 也接受了这一点。
谢谢,struct
在我格式化帖子时丢失了,现在添加它。
【参考方案1】:
是的,你可以,但如果你想在结构 A 之外使用结构 B,你会遇到错误。
【讨论】:
以上是关于嵌套结构名称可见性的主要内容,如果未能解决你的问题,请参考以下文章
使用 jquery 更改具有嵌套内容的 div 的可见性,onclick
go语言学习笔记 — 基础 — 复合数据类型 — 结构体(9.1):结构体可见性规则,结构体和结构体成员字段的跨包导出