在VS2010中编译旧C ++代码时出现cmath编译错误

时间:2010-06-29 14:08:45

标签: c++ visual-studio-2010 cmath

我继承了一些C ++文件和一个附带的makefile,我试图将其作为解决方案引入VS2010。我创建了一个空项目,并为其中一个makefile目标添加了适当的C ++和头文件(.hpp)。

然而,当我尝试编译项目时,我立即从cmath获得了大量关于acosf,asinf,atanf等的C2061(语法错误标识符)错误。

cmath中的错误行:

#pragma once
#ifndef _CMATH_
#define _CMATH_
#include <yvals.h>

#ifdef _STD_USING
   #undef _STD_USING
     #include <math.h>
   #define _STD_USING

#else /* _STD_USING */
   #include <math.h>
#endif /* _STD_USING */

#if _GLOBAL_USING && !defined(RC_INVOKED)

_STD_BEGIN
using _CSTD acosf; using _CSTD asinf;

相关C ++文件的顶部块(虽然命名为.C):

#include <fstream>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

后面是main()函数,它不直接调用任何trig函数。 这必须是非常明显的事情,但我很想念它。有人可以帮忙吗?

谢谢!

2 个答案:

答案 0 :(得分:13)

你确定它正在编译为C ++吗?大多数编译器将.C文件编译为C和.cpp文件作为C ++,使用C编译器编译C ++文件可能会失败。

此外,该代码混合了oldstyle('c')标头和newstyle('c ++')标头。它应该更像这样(我怀疑这是错误)。

#include <fstream>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>

using namespace std;

这就是我所能看到的所有内容。但是大多数情况下,当你在C / C ++本身的库文件中出错时,它仍然是你的代码在某处错了,比如忘记了;在头文件中的类语句之后。

答案 1 :(得分:4)

它可能没有编译为C ++代码 - 正如您所假设的那样。我将要求您右键单击vs2010中的文件,单击属性,转到“配置属性 - C / C ++ - 高级”,并确保“编译为”设置为“编译为C ++代码(/ TP)” '..如果没有,请将其更改为,然后重新编译..您可能必须重新创建预编译的标题,但我将修复您的'问题';)