12

私はいくつかのC++ファイルとそれに付随するmakefileを継承しましたが、これらをソリューションとしてVS2010に取り入れようとしています。空のプロジェクトを作成し、makefileターゲットの1つに適切なC ++およびヘッダー(.hpp)ファイルを追加しました。

しかし、プロジェクトをコンパイルしようとすると、すぐにacosf、asinf、atanfなどに関するcmathからの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関数を直接呼び出しません。これは本当に明白なことでなければなりませんが、私はそれを見逃しています。誰か助けてもらえますか?

ありがとう!

4

2 に答える 2

15

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 ++自体のライブラリファイルでエラーが発生した場合でも、;を忘れるなど、どこかで間違っているのはあなたのコードです。ヘッダーファイルのクラスステートメントの後。

于 2010-06-29T14:18:33.580 に答える
6

Its probably NOT compiling as C++ code - as you assume. I am going to ask you to right click on the file in vs2010, click properties, go to 'Configuration Properties - C/C++ - Advanced', and make sure 'Compile As' is set to 'Compile as C++ Code (/TP)'.. If not, change it to that, then recompile.. you may have to recreate your Pre-compiled Headers, but I am going to be this fixes your 'problem' ;)

于 2010-06-29T15:18:03.477 に答える