在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{
};
我仍然收到同样的错误。
如果有人能指出如何解决这些错误,我将非常感激。
谢谢,
答案
Microsoft编译器支持C语言和C ++语言,但它们不一样,需要区别对待(例如,class
在C中没有关键字,因此最终会导致错误)。因此,它必须以某种方式“知道”在编译源文件时处理的语言(C或C ++)(因此也处理包含)。
它认为您正在尝试编译C语言文件(因为它具有文件扩展名.c
),而您实际上正在使用C ++语言。将文件重命名为Microsoft C / C ++编译器识别为C ++的文件扩展名之一:.cpp
,.cxx
或.cc
。
或者,如果您无法重命名该文件,您还可以使用/Tp
的cl.exe
命令行选项强制它将该文件视为C ++文件(为了完整性,/Tc
将强制使用C语言)。
以上是关于在VS2010 C ++中解析“找到'{'在文件范围(缺少函数头?)”的主要内容,如果未能解决你的问题,请参考以下文章