cmath抛出错误C2062、C2059、C2143和C2447.cmath包含在矢量文件中

cmath is throwing errors C2062, C2059, C2143 and C2447. cmath is included in the vector file

本文关键字:cmath 包含 文件 C2447 C2143 出错 错误 C2062 C2059      更新时间:2023-10-16

我有一个旧的C++项目正在编译。它不是我写的。我正试图为我认识的人编译它。代码可以追溯到20世纪90年代初、80年代末,尽管其中一些代码大约在2008年左右才开发出来。我正试图在VS 2015中编译它。长话短说,我得到了一个错误矢量";包括在内。在矢量"中;cmath";包括在内,这就是出现错误的地方。显然,此代码是在Visual Studio的早期版本(即2013或2010(中成功编译的。

这是一个大型项目,因此很难完全呈现,但这是包含矢量的源文件的顶部:

#ifndef EXPRESSAPPLICATION_H
#define EXPRESSAPPLICATION_H
#pragma warning (disable : 4786)
#include <windows.h>
#include <vector>
#include "ObjList.h"

以下是错误列表:

严重性代码描述项目文件行抑制状态

错误C2062键入"double"意外的ExpressOffice C:\Program Files(x86(\Microsoft Visual Studio 14.0\VC\include\cath 17

错误C2059语法错误:"("ExpressOffice C:\Program Files(x86(\Microsoft Visual Studio 14.0\VC\include\cath 17

错误C2143语法错误:缺少";"之前"{"ExpressOffice C:\Program Files(x86(\Microsoft Visual Studio14.0\VC\include\cath 18

错误C2447"{":缺少函数头(旧式形式列表?(ExpressOffice C:\Program Files(x86(\Microsoft Visual Studio 14.0\VC\include\cath 18

错误C2062类型"float"意外的ExpressOffice C:\Program Files(x86(\Microsoft Visual Studio 14.0\VC\include\cath 30

错误C2059语法错误:"("ExpressOffice C:\Program Files(x86(\Microsoft Visual Studio 14.0\VC\include\cath 30

错误C2143语法错误:缺少";"之前"{"ExpressOffice C:\Program Files(x86(\Microsoft Visual Studio14.0\VC\include\cath 31错误C2447"{":缺少函数头(旧式形式列表?(ExpressOffice C:\Program Files(x86(\Microsoft Visual Studio 14.0\VC\include\cath 31

错误C2062键入"long double"意外的ExpressOffice C:\Program文件(x86(\Microsoft Visual Studio 14.0\VC\include\cath 328

错误C2059语法错误:"("ExpressOffice C:\Program Files(x86(\Microsoft Visual Studio 14.0\VC\include\cath 328

错误C2143语法错误:缺少";"之前"{"ExpressOffice C:\Program Files(x86(\Microsoft Visual Studio14.0\VC\include\cath 329

错误C2447"{":缺少函数头(旧式形式列表?(ExpressOffice C:\Program Files(x86(\Microsoft Visual Studio 14.0\VC\include\cath 329

以下是它在cmath中抱怨的代码行:

line 17:
_Check_return_ inline double abs(_In_ double _Xx) _NOEXCEPT
{
return (_CSTD fabs(_Xx));
}
line 30:
_Check_return_ inline float abs(_In_ float _Xx) _NOEXCEPT
{
return (_CSTD fabsf(_Xx));
}
line 328:
_Check_return_ inline long double abs(_In_ long double _Xx) _NOEXCEPT
{
return (_CSTD fabsl(_Xx));
}

似乎只有cmath中的abs((函数受到影响。其他数学函数均不受影响。我对这个问题感到困惑。谢谢你在这方面的帮助!

我得到了同样的错误,并发现原因是因为我有

#include <math.h>

在几个源文件中,但我也有

#include <cmath>

在另一个源文件中。我把<cmath>改成了<math.h>解决了问题。