首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LCC:提胡枝子失败的前瞻声明?

LCC:提胡枝子失败的前瞻声明?
EN

Stack Overflow用户
提问于 2011-09-01 16:42:02
回答 1查看 598关注 0票数 4

下面的代码片段在Mac上和gcc一起编译得很好,但是无法在Windows上用lcc 32编译:

代码语言:javascript
复制
typedef enum Foo Foo;

// Other code here

enum Foo { Bar = 1 };

并给出了以下错误:

未知枚举“Foo”

就我个人而言,这不是问题。我简单地将这些发言合并为:

代码语言:javascript
复制
typedef enum Foo { Bar = 1 } Foo;

但我想知道LCC是“更严格”(遵循某种标准)还是“更愚蠢”(编译器太笨,无法处理这种情况)。

谢谢。

另外,请参阅我的另一个LCC问题:LCC: Initializing Structs Containing Structs?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-01 17:25:13

枚举的前向声明是不标准的(它们违反了C99第6.7.2.3节第3节),如果添加-pedantic标志(如果编写可移植代码应该使用该标志),gcc也会发出警告。

原因是实现可以自由选择与int不同的整数类型来表示枚举(参见C99 6.7.2.2§4)。但是,要使其工作,编译器必须查看它需要表示的所有值,然后才能选择合适的类型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7273535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档