r36*_*363 0 c++ compiler-errors
我目前正在运行一个名为Relation的类的c ++项目.
我正在尝试编译它,但我不断得到此错误,无论我正在使用的文件扩展名.
编译器是cc,我正在尝试编译的类,即使在如下所示为空时,也会导致此错误.
我已经尝试了c ++头扩展,并且发生了相同的错误.
#ifndef RELATION_H_
#define RELATION_H_
class Relation {
public:
Relation();
virtual ~Relation();
};
#endif
Run Code Online (Sandbox Code Playgroud)
pax*_*blo 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'
Run Code Online (Sandbox Code Playgroud)
您应该检查您的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
Run Code Online (Sandbox Code Playgroud)
换句话说,我不认为xyzzy.hpp如果包含它的源文件仍然存在,那么包含(例如)的头文件会强制编译器编译C++ plugh.c.