APIENTRY宏错误

时间:2015-12-13 05:15:06

标签: c++ opengl glut freeglut

我正在尝试为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>

1 个答案:

答案 0 :(得分:0)

APIENTRY是Microsoft Windows中用于设置导出函数的调用约定的宏。在Linux中,这不是必需的。 APIENTRY在windows.h标题中定义,但在Linux中没有。

所以你应该把它放在源文件的最开头:

#ifdef _WIN32
#include <windows.h>
#else
#define APIENTRY
#endif