gpt4 book ai didi

c - 如何使用匿名结构声明变量

转载 作者:太空宇宙 更新时间:2023-11-03 23:25:45 25 4
gpt4 key购买 nike

以下代码无法编译,我能理解为什么,但无论如何我都需要让它工作,最好是以符合标准的方式。

extern const struct {  int x; } a;

const struct { int x; } a = {1};

编译器说,“错误:'a' 的类型冲突”,即使类型相同,即使它们可能是不同的匿名实例。

那么,在不给结构命名或不使用 typedef 的情况下,如何向编译器解释这两种类型是相同的?可以吗?

最佳答案

两个 struct 声明声明了两个不同的类型。

C 标准非常明确。 §6.7.2.3/p5:“结构、 union 或不包含标记的枚举类型声明了不同的类型。”

所以在标准 C 中,你运气不好。

如果您准备使用 gcc 扩展,则以下内容应该有效:

extern const struct {  int x; } a;

__typeof(a) a = {1};

如果您指定类似 -std=gnu11 的内容,那么您甚至可以省略两个下划线。

关于c - 如何使用匿名结构声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27884450/

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