2

Visual Studio 2010 Expressを使用していますが、ファイルtest.hで次のエラーが発生します。これは、コンパイルされた出力の場合です。

test.h(4): error C2061: syntax error : identifier 'test'
test.h(4): error C2059: syntax error : ';'
test.h(4): error C2449: found '{' at file scope (missing function header?)
test.h(18): error C2059: syntax error : '}'

test.hファイルは次のように記述されています。

#ifndef TEST_H
#define TEST_H

class test {
    int a; 
    int b; 
public:        
    test(int a, int b) { 
        this->a = a;
        this->b = b;
    }

    int add() { 
        return 0;
    }
};

#endif

VS2010プロジェクトの他のファイルはtest.cで、これは次のとおりです。

#include "test.h"

int main(int argc, char** argv) {
    return 0;
}

私はこの問題を解決するために多くの方法を試しました。test.hを次のように定義しても:

class test{

};

それでも同じエラーが発生します。

同様の問題 https://stackoverflow.com/questions/7798876/strange-errors-when-using-byte-pbyte-instead-of-char-char-in-vs2k10-wdk-envi が応答なしで表示されました。

誰かがこれらのエラーを解決する方法を指摘していただければ本当にありがたいです。

ありがとう、

4

1 に答える 1

8

MicrosoftコンパイラはC言語とC++言語の両方をサポートしていますが、それらは同じではなく、異なる方法で処理する必要があります(たとえばclass、Cにはキーワードがないため、最終的にgetエラーが発生します)。したがって、ソースファイルをコンパイルするとき(したがって、インクルードを処理するとき)に、どの種類の言語(CまたはC ++)を処理するかを何らかの形で「知る」必要があります。

.c実際にC++言語を使用しているときに、C言語ファイルをコンパイルしようとしていると見なされます(ファイル拡張子が付いているため)。.cppファイルの名前を変更して、Microsoft C / C++コンパイラがC++: 、、.cxxまたはとして認識するファイル拡張子の1つにします.cc

または、ファイルの名前を変更できない場合は、の/Tpコマンドラインオプションを使用cl.exeして、ファイルをC ++ファイルとして処理するように強制することもできます(完全/Tcを期すために、C言語を強制します)。

于 2012-09-21T04:20:46.980 に答える