【发布时间】:2012-11-06 10:11:29
【问题描述】:
在过去的三个月里,我一直很高兴地用 GCC 编译我的代码,直到我重建了我的交叉编译器,那时我发现自己收到消息“错误:位域'...' -整体型”。
一个有问题的枚举示例如下:
typedef unsigned char byte;
enum class opStatus : byte
{
/* Process has yet to begin execution */
Ready,
/* Process can resume execution */
Started,
/* Process has completed */
Finished,
/* Process is handling shutdown */
Finishing,
};
struct // Example usage
{
opStatus Status : 2;
};
为什么会这样?
【问题讨论】:
-
也许你破坏了你的交叉编译器,或者忘记构建 C++11 支持。没有看到你实际做了什么,也不知道你的编译器是什么,这里没什么好说的。
-
GNU GCC G++ 4.6.0 使用配置 C++0x。而且我已经多次使用新的资源重新构建了编译器。
-
由于这似乎是由您的交叉编译器引起的问题,因此该编译器的代码将有助于回答这个问题。
-
请注意,代码
struct { opStatus Status : 2; };无论如何都会给出编译错误,即使opStatus Status : 2在语言中是允许的!您必须在声明中至少介绍一个名称。所以写struct tag_name { opStatus Status : 2; };或struct { opStatus Status : 2; } object_name;。 -
试着想出一个SSCCE。
标签: c++ class enums bit-fields