enum的前置声明在gcc语言里报错

windows下vs的编译器编译下面的代码没有问题,enum前置声明

enum kMessageSendState


struct DeleteRequestParam 
{
    std::list<std::pair<std::string, kMessageSendState> > uuid_state_list;
};

但是在gcc4.9.3的编译器里编译会报错

error: use of enum ‘kMessageSendState’ without previous declaration
 enum kMessageSendState;
      ^

原因:

vs是自己有特性可以支持这个写法,标准c++不支持。

c++编译器需要支持为变量预留多少空间,而前置声明的enum无法告诉编译器枚举的具体类型 int word char.

正确的写法:

enum kMessageSendState:unsigned int;

如果遇到underline type的错误,就去实际定义enum kMessageSendState的地方后面也加上:unsigned int;

enum kMessageSendState:unsigned int
{
    kOK=0,
    kFailed
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值