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 中没有关键字,因此最终会导致您得到的错误)。所以它必须以某种方式“知道”在编译源文件时它正在处理哪种语言(C或C++)(因此也处理包含)。

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

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

于 2012-09-21T04:20:46.980 回答