头文件错误:应为'='''''';asm&x27;或'__属性';之前 我现在运行一个C++项目,它的类叫做Reloogn.

头文件错误:应为'='''''';asm&x27;或'__属性';之前 我现在运行一个C++项目,它的类叫做Reloogn.,c++,compiler-errors,C++,Compiler Errors,我试图编译它,但不管我使用的文件扩展名是什么,我总是会遇到这个错误 编译器是cc,我试图编译的类,即使是下面的空类,也会导致此错误 我已经尝试了C++头扩展,并且出现了相同的错误。 #ifndef RELATION_H_ #define RELATION_H_ class Relation { public: Relation(); virtual ~Relation(); }; #endif 这是当你尝试用C编译器编译C++代码时所得到的错误。 pax$ cat qq.cpp class

我试图编译它,但不管我使用的文件扩展名是什么,我总是会遇到这个错误

编译器是cc,我试图编译的类,即使是下面的空类,也会导致此错误

我已经尝试了C++头扩展,并且出现了相同的错误。

#ifndef RELATION_H_
#define RELATION_H_

class Relation {
public:
Relation();
virtual ~Relation();
};

#endif

这是当你尝试用C编译器编译C++代码时所得到的错误。

pax$ cat qq.cpp
class Relation {
public:
    Relation();
    virtual ~Relation();
};

pax$ g++ -c -o qq.o qq.cpp

pax$ cp qq.cpp qq.c

pax$ gcc -c -o qq.o qq.c
qq.c:4: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Relation'

你应该检查你的代码> cc编译器实际上能够编译C++,如果需要的话,可以选择什么选项。 如果它是

gcc
(根据完全相同的错误消息,它看起来确实是这样),您可能需要确保调用的是
g++
,而不是
gcc
,和/或源文件的扩展名(不是头)是可识别的,如
.cpp
(a)

我不完全确定
gcc
遵循的规则,但我总是发现使用
blahblah.cpp
等源文件并显式使用
g++
更安全


(a) 推理:由于您在特定情况下提到使用了正确的头文件扩展名,我认为一种可能性是头文件扩展名对
gcc
试图编译源文件的内容没有任何影响。根据以下记录,它仅使用源文件扩展名:

pax$ cat xyzzy.hpp
class Relation {
public:
    Relation();
    virtual ~Relation();
};

pax$ cat plugh.c
#include "xyzzy.hpp"

pax$ gcc -c -o plugh.o plugh.c
In file included from plugh.c:1:
xyzzy.hpp:1: error: expected '=', ',', ';', 'asm' or '__attribute__'
                    before 'Relation'

pax$ cp plugh.c plugh.cpp

pax$ gcc -c -o plugh.o plugh.cpp

换句话说,我认为如果包含源代码文件的代码仍然是<代码> PULH.C./COD> .< /P>这段代码没有错误,我认为没有一个包含的代码头文件<代码> > XyZy.Hpp会强制编译器编译C++。很可能在代码中,在包含这个头(它本身可以是另一个头)之前,如果你试图通过C编译器而不是C++来运行,那么就有错误,这是事实:——我已经添加了一个现有的*.c文件,用于测试目的,在我尝试包含带有类定义的*.h文件之前,一切都很好。抓挠我的头,因为每次我注释掉标题时,它都起作用。将*.c改为*.cpp和boom,效果很好。有时候,它就在你面前,只需轻轻推一下这样的答案。再次感谢。