12

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

然而,当我尝试编译项目时,我立即收到来自 cmath 的大量 C2061(语法错误标识符)错误,涉及 acosf、asinf、atanf 等。

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() 函数,它不直接调用任何三角函数。这必须是非常明显的东西,但我错过了它。任何人都可以帮忙吗?

谢谢!

4

2 回答 2

15

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

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

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

using namespace std;

这就是我所能看到的。但是大多数情况下,当您在 C/C++ 本身的库文件中遇到错误时,仍然是您的代码在某个地方出错,例如忘记了 ; 在头文件中的类语句之后。

于 2010-06-29T14:18:33.580 回答
6

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

于 2010-06-29T15:18:03.477 回答