当您尝试编译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++
。
(一)推理:既然你在,你使用了正确的头文件扩展你的具体情况提了,我认为一种可能性是扩展头有任何作用什么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包含的头文件++如果包含它的源文件仍然是plugh.c
。
这段代码没有错误。大多数情况下,它包含在代码中,然后再包含这个头文件(本身可能是另一个头文件) – Ayjay
那么,如果您尝试通过C编译器运行而不是C++运行它,那么看起来就是这种情况: ) – paxdiablo