当我仅#include

问题描述 投票:0回答:2
为什么会编译错误?

我将gcc升级到5.4,除了math.h似乎没问题

当我写如下hello.cpp时:

#include<math.h>
int main(){return 0;}

然后我使用gcc 5.4,g ++ 5.4编译上述cpp

g++ hello.cpp

发生错误

In file included from /usr/include/math.h:70:0,
                 from main.cpp:1:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:63:16: error: expected constructor, destructor, or type conversion before ‘(’ token
 __MATHCALL_VEC (cos,, (_Mdouble_ __x));
                ^
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:65:16: error: expected constructor, destructor, or type conversion before ‘(’ token
 __MATHCALL_VEC (sin,, (_Mdouble_ __x));
                ^
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:81:22: error: ‘sincos’ has not been declared
 __MATHDECL_VEC (void,sincos,,
                      ^
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:81:29: error: expected identifier before ‘,’ token
 __MATHDECL_VEC (void,sincos,,
                             ^
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:82:3: error: expected identifier before ‘(’ token

当我降级到gcc 4.8、4.9时,仍然会出现此问题

c++11 ubuntu-16.04 glibc gcc5
2个回答
1
投票

这个问题对我来说是不可复制的。

g++ hello.cpp -ansi -Wall -pedantic

编译无误。并运行:

Valgrind在运行时未报告任何错误。

==100412== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

海报的安装有问题。另外,正如其他人所说,升级gcc。


0
投票

我找到了解决方案:

apt-get install linux-libc-dev
© www.soinside.com 2019 - 2024. All rights reserved.