cmath выдает ошибки C2062, C2059, C2143 и C2447. cmath включен в векторный файл - PullRequest
0 голосов
/ 11 июля 2020

У меня есть этот старый C ++ проект, который я компилирую. Это не я написал. Я пытаюсь скомпилировать его для знакомого. Код восходит к началу 1990-х, концу 1980-х годов, хотя некоторые из них все еще были разработаны примерно в 2008 году. Хотя я вижу, что использовалась Visual Studio 2013. Я пытаюсь скомпилировать его в 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 \ cmath 17

Ошибка C2059 синтаксическая ошибка: ')' ExpressOffice C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ include \ cmath 17

Ошибка C2143 синтаксическая ошибка: отсутствует ' ; ' перед '{' ExpressOffice C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ include \ cmath 18

Ошибка C2447 '{': отсутствует заголовок функции (старый -стайл формальный список?) ExpressOffice C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ include \ cmath 18

Ошибка C2062 неожиданный тип 'float' ExpressOffice C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ include \ cmath 30

Ошибка C2059 синтаксическая ошибка: ')' ExpressOffice C: \ Program Files ( x86) \ Microsoft Visual Studio 14.0 \ VC \ include \ cmath 30

Ошибка C2143 синтаксическая ошибка: отсутствует ';' перед '{' ExpressOffice C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ include \ cmath 31 Ошибка C2447 '{': отсутствует заголовок функции (формальный список в старом стиле?) ExpressOffice C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ include \ cmath 31

Ошибка C2062 тип 'long double' неожиданный ExpressOffice C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ include \ cmath 328

Ошибка C2059 синтаксическая ошибка: ')' ExpressOffice C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ include \ cmath 328

Ошибка C2143 синтаксическая ошибка: отсутствует ';' перед '{' ExpressOffice C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ include \ cmath 329

Ошибка C2447 '{': отсутствует заголовок функции (старый -стайл формальный список?) ExpressOffice C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ include \ cmath 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));
    }

Похоже, что затронуты только функции abs () в cmath. Никакие другие математические функции не затронуты. Меня озадачивает эта проблема. Спасибо за любую помощь!

...