Это ошибка, которую вы получаете, когда пытаетесь скомпилировать код 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) Обоснование: поскольку в вашем конкретном случае вы упоминаете, что используете правильные header расширения файла,Я думаю, что одна из возможностей заключается в том, что расширение заголовка никак не влияет на то, что gcc
пытается компилировать.оставьте исходный файл как.Он использует только расширение файла source , согласно следующей записи:
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
.