移植 C++从 MS Visual Studio 到 Linux 的代码并处理类型化枚举
我正在移植用 MS Visual Studio 编写的代码。对于枚举,MS Visual Studio 允许用户指定如下类型:
enum SystemStatus : BYTE { Ok = 0, NeedsAttention, Failed };
其中 BYTE 是 unsigned char
参考 http://msdn.microsoft.com/en-us /library/2dzy4k6e.aspx
当我尝试使用 RedHat 5.6 附带的 g++ 版本 4.1.2 编译代码时,这会导致错误。显然,新的 C++ 标准 C++0x 支持强类型枚举: http://en .wikipedia.org/wiki/C%2B%2B0x#Strongly_typed_enumerations
有没有一种简单的方法来解决这个问题并移植代码?如果可能的话,我们希望代码能够在 Windows 和 Linux 中编译。这个项目中的枚举数量非常巨大!谢谢。
I am porting code that was written with MS Visual Studio. For enums MS Visual Studio allows a user to specify a type like this:
enum SystemStatus : BYTE { Ok = 0, NeedsAttention, Failed };
where BYTE is unsigned char
Reference http://msdn.microsoft.com/en-us/library/2dzy4k6e.aspx
This causes errors when I try and compile the code with g++ version 4.1.2 that comes with RedHat 5.6. Apparently the new C++ standard C++0x supports strongly typed enumerations: http://en.wikipedia.org/wiki/C%2B%2B0x#Strongly_typed_enumerations
Is there an easy way to solve this problem and get the code ported? If possible we would like the code to compile in both Windows and Linux. The number of enums in this project is huge!! Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您使用的 g++ 版本不支持 c++11 功能,例如扩展枚举。只需从源代码编译最新的 g++,就有一个 帮助程序脚本 下载 gcc 依赖项并为您构建它。
The version of g++ you are using doesn't support c++11 features, such as extended enums. Just compile latest g++ from source, there is a helper script that downloads gcc dependencies and builds it for you.