我尝试编译the code http://cpp.sh/8vrep使用选项 C++14:
#define X static_cast<double>(2)
#include <algorithm>
// if you change the two lines, no error occurs
int main()
{
return 0;
}
但 X 之后我得到错误:
错误:应为“,”或“...”
我没有收到选项 C++98 的错误。在我的 gcc 版本 4.8.4 中,我没有收到错误,但在 5.4.0 中却出现了错误。这是一个错误吗?我做错了什么吗?
我在本地安装 g++ 5.4.0 时遇到同样的错误。我看了看g++ -E
输出,似乎错误跟踪到 /usr/lib/gcc/x86_64-linux-gnu/5/include/ia32intrin.h 第 252 和 254 行:
/* Write flags register */
extern __inline void
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
__writeeflags (unsigned long long X) // 252
{
__builtin_ia32_writeeflags_u64 (X); // 254
}
这可以被认为是编译器捆绑库中的一个错误,因为非保留#define
s 不应该与它们发生冲突。 (同一标头中的其他函数使用参数__X
.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)