我目前正在运行一个名为Relation的类的c ++项目。
我正在尝试编译它,但无论我使用的文件扩展名是什么,我都会不断收到此错误。
编译器是cc,而我正在尝试编译的类,即使是如下所示为空,也会导致此错误。
我已尝试过c ++标头扩展,但也会出现相同的错误。
#ifndef RELATION_H_
#define RELATION_H_
class Relation {
public:
Relation();
virtual ~Relation();
};
#endif
答案 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>