我继承了一些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函数。 这必须是非常明显的事情,但我很想念它。有人可以帮忙吗?
谢谢!
答案 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)” '..如果没有,请将其更改为,然后重新编译..您可能必须重新创建预编译的标题,但我将修复您的'问题';)