在VS2010中编译旧C代码时出现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函数.
这必须是非常明显的事情,但我很想念它.有人可以帮忙吗?

谢谢!

最佳答案
你确定它正在编译成C吗?大多数编译器将.C文件编译为C和.cpp文件编译为C,使用C编译器编译C文件可能会失败.

此外,该代码混合了旧式(‘c’)标头和newstyle(‘c’)标头.应该更像这样(我怀疑这是错误).

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

using namespace std;

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

转载注明原文:在VS2010中编译旧C代码时出现cmath编译错误 - 代码日志