在VS2010 C++中解析"找到'{'在文件范围(缺少函数头?)"

Joh*_*ohn 2 c++ visual-studio-2010

我正在使用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 : '}'
Run Code Online (Sandbox Code Playgroud)

文件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
Run Code Online (Sandbox Code Playgroud)

VS2010项目中的另一个文件是test.c,它是:

#include "test.h"

int main(int argc, char** argv) {
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我尝试了多种方法来解决这个问题.即使我定义test.h如下:

class test{

};
Run Code Online (Sandbox Code Playgroud)

我仍然收到同样的错误.

我看到了类似的问题 /sf/ask/545921351/ 没有回应.

如果有人能指出如何解决这些错误,我将非常感激.

谢谢,

Chr*_*n.K 6

Microsoft编译器支持C语言和C++语言,但它们不一样,需要区别对待(例如class,C中没有关键字,因此最终会导致错误).因此,它必须以某种方式"知道" 在编译源文件时处理的是哪种语言(C C++)(因此也处理包含).

它认为您正在尝试编译C语言文件(因为它具有文件扩展名.c),而您实际上正在使用C++语言.文件重命名为具有文件扩展名的Microsoft C/C++编译器识别为C++的一个:.cpp,.cxx.cc.

或者,如果您无法重命名该文件,您还可以使用/Tp命令行选项cl.exe强制它将该文件视为C++文件(为了完整性/Tc将强制使用C语言).