【发布时间】:2016-03-30 20:33:46
【问题描述】:
我想知道是否可以在 ANSI C 中声明匿名结构。我的代码是:
struct A
{
int x;
};
struct B
{
struct A;
int y;
};
当我编译它时,我得到: 警告:声明没有声明任何内容
我已经读到标志 -fms-extensions 可以解决问题,但是它只适用于 Windows 系统,因为它产生:
警告:匿名结构是 Microsoft 扩展 [-Wmicrosoft]
我可以使用任何 ANSI 等效扩展吗?
【问题讨论】:
-
没有标识符的
struct?不,我不这么认为。你可以声明一个struct,不带类型名称,但带有struct {} identifier;的标识符。structs 的成员具有不同的范围,那么如果没有标识符,如何处理成员? -
ANSI C 没有这个特性。您是否仅限于使用 ANSI C 或者也可以使用 C99 或 C11?
-
我可以使用C99和C11,有什么解决方案吗?
-
@KlasSegeljakt 是的。 C11 提供匿名结构。让我修改我的答案。
标签: c ansi anonymous-struct