c++ - g++ 编译器使用 -std=c++11 标志给我错误,但使用 -std=gnu++11 可以正常编译。这是什么意思?
问题描述
我正在维护一个正在运行的旧服务器,CentOS6(gcc (GCC) 4.4.7, C++98)
我试图CentOS7(gcc (GCC) 4.8.5)
用 C++11 将它迁移到它。
起初,我尝试使用标志进行编译,-std=c++11
但它给了我很多错误,如下所示。
`In file included from /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/x86intrin.h:30:0,
from /usr/include/c++/4.8.2/x86_64-redhat-linux/bits/opt_random.h:33,
...
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/mmintrin.h: In function ‘__m64_mm_cvtsi32_si64(int)’:
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/mmintrin.h:61:54: error: can’t convert between vector values of different size
return (__m64) __builtin_ia32_vec_init_v2si (__i, 0);
^
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/mmintrin.h: In function ‘int _mm_cvtsi64_si32(__m64)’:
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/mmintrin.h:104:53: error: cannot convert ‘__m64 {aka int}’ to ‘__vector(2) int’ for argument ‘1’ to ‘int __builtin_ia32_vec_ext_v2si(__vector(2) int, int)’
return __builtin_ia32_vec_ext_v2si ((__v2si)__i, 0);`
不知何故,我遇到了使用标志,-std=gnu++11
它工作得很好。
我能用这个假设什么?这是否意味着旧的服务器代码以某种方式使用 gnu 扩展或其他什么?
解决方案
推荐阅读
- python - 使用 csv 数据文件减少代码长度会出现错误 a.all() 或 a.any()
- jasper-reports - 使用 XmlDataSource 在 iReports 中创建表
- ios - 在 XMPPMessageArchiving_Message_CoreDataObject 中存储重复消息(单聊)
- android - 如何使用 Google Fit API 获取各种健身活动的读数?
- html - 使用 CSS 样式表:列宽不正确
- maven - 如何通过jenkins强制部署maven项目..?
- asp.net - 哪个是 .NET Core 中 Kestrel 的根文件夹
- oauth - 带有第三方密钥管理器的 WSO2 API 管理器返回一个立即过期的令牌
- vim - 捕获从 `job_start()` 显示的 `echon` 消息
- c++ - 如何解决错误 193:%1 不是 dev c++ 中的 win32 应用程序?