我有一个正在开发的简单图形应用程序,想要跨平台运行。现在,我有一个简单的make文件,可以在Ubuntu Linux和OSX上正常编译。
我在Linux上使用GNU g ++,据我在OSX上了解,C ++编译器有一个g ++的别名-因此,这就是在OSX上运行make
时要调用的名称。 Clang声称它是compatible with g++,直到今天我还没有关于兼容性的任何问题。但是,昨天我在Linux机器上工作时添加了带有析构函数的类,当我尝试在OSX机器上编译相同的代码时,收到以下错误:
make osx
g++ -o build/open_gl_demo *.cpp -framework OpenGL -lGLEW -lglfw -lSOIL
In file included from main.cpp:4:
./shader_program.hpp:18:6: error: expected the class name after '~' to name a destructor
~ShaderProgram();
^~~~~~~~~~~~~
ShaderProgram
1 error generated.
In file included from shader_program.cpp:1:
./shader_program.hpp:18:6: error: expected the class name after '~' to name a destructor
~ShaderProgram();
^~~~~~~~~~~~~
ShaderProgram
shader_program.cpp:46:17: error: expected the class name after '~' to name a destructor
ShaderProgram::~ShaderProgram() {
^~~~~~~~~~~~~
ShaderProgram
2 errors generated.
我不知道为什么有效声明的构造函数在Linux上使用g ++可以正常编译的构造函数在OSX上失败。这是相关代码:
shader_program.hpp:
class ShaderProgram {
public:
[...other public methods and variable signatures...]
~ShaderProgram();
};
#endif
shader_program.cpp:
#include "shader_program.hpp"
[...other method definitions...]
ShaderProgram::~ShaderProgram() {
glDeleteProgram(ShaderProgram);
glDeleteShader(FragmentShader);
glDeleteShader(VertexShader);
}
我想念什么?
可能是编译器known issue