gpt4 book ai didi

c++ - 从 'cmath' 和 'cstdlib' 得到一百个非常相似的编译器错误

转载 作者:太空狗 更新时间:2023-10-29 21:21:26 31 4
gpt4 key购买 nike

我正在开发一个 C++ 项目,其中包括一些来自第三方的 C 代码。我的build设置是“桌面 Qt 5.1.1 MSVC2012 64 位”,这显然是在 Windows 上使用 Qt Creator 时的默认设置。

当尝试编译整个东西时,我遇到了一百多个编译器错误。奇怪的是,它们似乎都非常密切相关,因为其中一半来 self 假设的 C 标准库(正如它在错误中所说的“cstdlib”),另一半来自 C 数学库(cmath) .以下是我遇到的错误的摘录,

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\cstdlib:19: error: C2054: expected '(' to follow 'using'

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\cstdlib:19: error: C2061: syntax error : identifier 'using'

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\cstdlib:21: error: C2059: syntax error : ';'

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\cmath:28: error: C2061: syntax error : identifier 'acosf'

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\cmath: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。

关于c++ - 从 'cmath' 和 'cstdlib' 得到一百个非常相似的编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22448848/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com