我正在尝试为opengl调试创建一个回调函数,按照OpenGL superbible的示例代码,我创建了函数 -
static void APIENTRY simple_print_callback(GLenum source,
GLenum type,
GLuint id,
GLenum severity,
GLsizei length,
const GLchar* message,
void * userParam)
{
printf("Debug message with source 0x%04X, type 0x%04X, "
"id %u, severity 0x%0X, ’%s’\n",
source, type, id, severity, message);
}
但在编译时我收到了错误
error: expected initializer before 'simple_print_callback'
我的程序在没有调试上下文的情况下运行正常,因此不太可能出现错误。
我在ubuntu 64位上运行这个,并且我已经包含了以下标题 -
#include <GL/glew.h>
#include <GL/gl.h>
#include <GL/glext.h>
#include <GL/freeglut.h>
答案 0 :(得分:0)
APIENTRY是Microsoft Windows中用于设置导出函数的调用约定的宏。在Linux中,这不是必需的。 APIENTRY在windows.h
标题中定义,但在Linux中没有。
所以你应该把它放在源文件的最开头:
#ifdef _WIN32
#include <windows.h>
#else
#define APIENTRY
#endif