C++ icc:包括omp.h需要byteswap.h

C++ icc:包括omp.h需要byteswap.h,c++,compiler-errors,icc,C++,Compiler Errors,Icc,刚刚尝试使用icc-11编译我的代码(在gcc中工作得非常好)。 如果我包括omp.h我会得到以下错误: /usr/include/bits/byteswap.h(47): error: identifier "__builtin_bswap32" is undefined return __builtin_bswap32 (__bsx); ^ /usr/include/bits/byteswap.h(111): error: identifier "__buil

刚刚尝试使用icc-11编译我的代码(在gcc中工作得非常好)。
如果我包括
omp.h
我会得到以下错误:

/usr/include/bits/byteswap.h(47): error: identifier "__builtin_bswap32" is undefined
    return __builtin_bswap32 (__bsx);
           ^

/usr/include/bits/byteswap.h(111): error: identifier "__builtin_bswap64" is undefined
    return __builtin_bswap64 (__bsx);
如果我包含
stdlib.h
,也会发生同样的情况

我真的很困惑,我甚至不知道byteswap有什么好处。在编译之前,我已经发布了
iccvars\u intel64.sh
脚本。不过没什么帮助

有什么想法吗


注意:如果我想并行一些循环,我甚至需要包括
omp.h
?也许我可以简单地省略
#include

不幸的是,ICC11.0不支持
内置bswap32
内置bswap64
。您可能会遇到这些错误,因为
byteswap.h
omp.h
stdlib.h
内部包含。本报告中也报告了这一问题

基本上,您的系统头是“更新的”,与ICC11.0不兼容

由于bswap内置程序在较新的ICC版本(至少从13.0开始,根据)中得到支持,一个选项是升级到较新的ICC

或者,您需要使用与ICC 11.0兼容的标准标头,而不是系统标头,如本“英特尔开发人员专区”中所述。一种方法是安装一个“匹配”ICC11.0的GCC版本,然后告诉ICC使用与该GCC捆绑的头文件。根据
,ICC 11.0于2008年11月发布,因此发布系列可能兼容(其他请参见此处)。

不幸的是,ICC 11.0不支持
\uuuuuuuBuiltin\uBSWAP32
\uuBuiltin\uBSWAP64
。您可能会遇到这些错误,因为
byteswap.h
omp.h
stdlib.h
内部包含。本报告中也报告了这一问题

基本上,您的系统头是“更新的”,与ICC11.0不兼容

由于bswap内置程序在较新的ICC版本(至少从13.0开始,根据)中得到支持,一个选项是升级到较新的ICC

或者,您需要使用与ICC 11.0兼容的标准标头,而不是系统标头,如本“英特尔开发人员专区”中所述。一种方法是安装一个“匹配”ICC11.0的GCC版本,然后告诉ICC使用与该GCC捆绑的头文件。根据 ,ICC11.0于2008年11月发布,因此该发布系列可能兼容(其他信息请参见此处)