标题文件错误:预期'=',',',';','asm'或'__attribute__'之前

时间:2011-10-24 02:30:40

标签: c++ compiler-errors

我目前正在运行一个名为Relation的类的c ++项目。

我正在尝试编译它,但无论我使用的文件扩展名是什么,我都会不断收到此错误。

编译器是cc,而我正在尝试编译的类,即使是如下所示为空,也会导致此错误。

我已尝试过c ++标头扩展,但也会出现相同的错误。

#ifndef RELATION_H_
#define RELATION_H_

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

#endif

1 个答案:

答案 0 :(得分:11)

当您尝试使用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(并且肯定看起来像那样,基于完全相同的错误消息),您可能需要确保调用{{1}而不是g++和/或您的源文件(不是标题)的扩展名是公认的,例如gcc (a)

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


(a)推理:既然你在特定情况下提到你正在使用正确的标题文件扩展名,我认为一种可能性是标题扩展名有对g++尝试编译源文件没有任何影响。它仅使用 source 文件扩展名,如以下脚本:

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 ,那么包含(例如)xyzzy.hpp的头文件会强制编译器编译C ++。 / p>