枚举体的声明与定义与命名空间之问题

采石工 2011-02-25 05:39:26
下面的代码能够编译链接通过,望大侠解释一下

#include <stdio.h>

int main()
{
enum;
enum {};

enum foo;
enum foo{};
enum {foo};

enum bar{bar};

enum baz;
enum baz{};
enum {baz};
//error C2371: 'baz' : redefinition; different basic types
// int baz;

return 0;
}
...全文
216 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
enum {};

enum foo;
enum foo{};
enum {foo};

enum bar{bar};

enum baz; //这里是声明
enum baz{}; //这事是实现
enum {baz};

不会报错。。。
  • 打赏
  • 举报
回复
像结构体
struct a;
struct b{};
struct {};

a c;
前三行不报错,最后一行报错
另外,struct和enum不一样
  • 打赏
  • 举报
回复
enum;我的会报错
bluesky12312388 2011-02-25
  • 打赏
  • 举报
回复
果断是不行地
采石工 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 thefirstz 的回复:]

可以通过编译?测了下,不行啊
[/Quote]
你好,我是在Visual C++ 6.0下编译链接通过的,不知道你使用的是什么编译器?
  • 打赏
  • 举报
回复
enum;直接写int;也会成功

enum a{b}

a是枚举的名称 , 可以为空,
如果没{},说明是声明,而不是实现
如果b为空,正常如同结构体可以无任何成员变量一样
昵称很不好取 2011-02-25
  • 打赏
  • 举报
回复
可以通过编译?测了下,不行啊

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧