从"cmath"和"cstdlib"获得一百个非常相似的编译器错误
Getting a hundred of very similar compiler errors from 'cmath' and 'cstdlib'
我正在做一个c++项目,其中包括一些来自第三方的C代码。我的构建设置是"桌面Qt 5.1.1 MSVC2012 64bit",这恰好是在Windows上使用Qt Creator时的默认设置,显然。
当试图编译整个东西时,我得到了一百多个编译器错误。奇怪的是,它们似乎都非常密切相关,因为它们中的一半来自C标准库(因为它在错误上说'cstdlib'),另一半来自C数学库(cmath)。以下是我得到的错误的摘录,
C:Program Files (x86)Microsoft Visual Studio 11.0VCincludecstdlib:19: error: C2054: expected '(' to follow 'using'
C:Program Files (x86)Microsoft Visual Studio 11.0VCincludecstdlib:19: error: C2061: syntax error : identifier 'using'
C:Program Files (x86)Microsoft Visual Studio 11.0VCincludecstdlib:21: error: C2059: syntax error : ';'
C:Program Files (x86)Microsoft Visual Studio 11.0VCincludecmath:28: error: C2061: syntax error : identifier 'acosf'
C:Program Files (x86)Microsoft Visual Studio 11.0VCincludecmath:28: error: C2059: syntax error : ';'
我没有必要再抄了,因为所有的例子都差不多。
奇怪的是,当我开始使用QMake和MSVC2012编译器时,我才开始得到这种错误。在开始添加Qt前端之前,我在最新版本的g++ (MinGW)上编译了整个东西,启用了c++ 11标志(注意这个标志在Qt .pro文件中也启用了)。
正如我所说的,我用一个c++类封装了我想使用的所有C模块。我正在讨论的这些C模块包括防止c++函数修饰其函数的代码:
#ifdef __cplusplus
extern "C" {
#endif
你认为这与编译器有关,与代码本身(也许我的C和我的c++没有正确地放在一起),构建或配置…?
cstdlib
是不是一个C头,它是一个c++头。如果你从C文件中包含它,你可以期待任何事情发生。
在C文件中,必须包含stdlib.h
。这是所有。您不必将源文件的扩展名更改为.cpp
-因为,毕竟c++是而不是 C。
我不确定你的"math"在你的程序中是用什么。
然而,至少有一些与"数学"相关的C编程方法在"limits.h"中,例如INT_MIN。
因此,我认为你可以尝试包括这个头,看看它是否有效。
相关文章:
- 模板元程序查找相似的连续类型名称
- OpenGL大的3D纹理(>2GB)非常慢
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 为什么std::互斥需要很长的、非常不规则的时间来共享
- G++ C++17 类模板参数推导在非常特殊的情况下不起作用
- 使用浮点数和双精度数的非常小数字的数学
- 为什么这些完全相似的代码不起作用?
- 在打开多个其他窗口时使用全屏窗口时帧速率非常低
- 这两个代码片段相似,但显示的结果不同
- 父类的私有函数会导致对具有相同名称和相似参数的子类中的公共函数的不明确调用
- 我从int x[3]得到的一个非常奇怪的输出;
- 反向迭代器在C++中非常奇怪的行为
- 当两个功能非常相似时,如何避免复制和粘贴?
- 维护/维持两个代码集的风险,一个用于 CPU,一个用于 GPU,需要执行非常相似的功能
- rand() 和 srand() 给出了奇怪的相似结果.来自 rand() 的返回非常相似
- 四元建立的迹象非常相似
- 在非常相似的方法之间共享代码
- Rand() 返回相同或非常相似的输出值
- 在一个非常大的序列中找到相似的子序列
- 从"cmath"和"cstdlib"获得一百个非常相似的编译器错误