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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在VS2010 C ++中解析“找到'{'在文件范围(缺少函数头?)”相关的知识,希望对你有一定的参考价值。

我正在使用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没有回应。

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

谢谢,

答案

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

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

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

以上是关于在VS2010 C ++中解析“找到'{'在文件范围(缺少函数头?)”的主要内容,如果未能解决你的问题,请参考以下文章

vs2015写c++不是内部或外部命令,也不是可运行的程序或批处理文件

dcmtk lnk2019 无法解析外部符号

如何在VS2010中运行编译C和C++?

VS2010运行时无法启动程序系统找不到指定文件怎么回事

在vs2012中,如何创建c语言程序?

vs2010,项目-〉属性-〉在C/C++章节中-〉常规节点-〉附加包含目录。为啥我找不到附加包含目录?