[英]Compiling with Callback Function Pointers in Visual C++
我正在按照http://noobtuts.com/cpp/2d-pong-game提供的说明,使用名为freeglut的API制作一个简单的乒乓游戏。 API中包含两个函数,这些函数需要一个指向返回void的回调的指针,而我已在main函数下定义了该回调。 但是,在编译时,我收到错误消息C2065,指出所提供的回调参数是未声明的标识符。
当我将鼠标悬停在智能感知上时,这是它们提供的功能的定义。
void__stdcall glutDisplayFunc(void(* callback)())
void__stdcall glutTimerFunc(unsigned int time,void(* callback)(int),int value)
这是我的代码:
#include "stdafx.h"
#include "freeglut.h"
#include <string>
#include <windows.h>
#include <iostream>
#include <conio.h>
#include <sstream>
#include <math.h>
#include <gl\GL.h>
#include <gl\GLU.h>
#pragma comment (lib, "OpenGL32.lib")
//window size and update rate (60 fps)
int width = 500;
int height = 200;
int interval = 1000 / 60;
int _tmain(int argc, char** argv)
{
//initialize openg 1 (via glut)
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(width, height);
glutCreateWindow("jackfrye.com Pong");
//Register callback functions
glutDisplayFunc(draw);
glutTimerFunc(interval, update, 0);
glutMainLoop();
return 0;
}
void draw() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
//TODO: draw scene
//swap buffers (has to be done at the end);
glutSwapBuffers();
}
void update(int value) {
//Call update() again in 'interval' milliseconds
glutTimerFunc(interval, update, 0);
//Redisplay frame
glutPostRedisplay();
}
我尝试将回调函数放在main函数中,但是我认为这是不正确的,并且仍然无法编译。
您需要在使用回调函数之前声明它们。 编译器从头到尾读取源代码。 在_tmain
函数中引用回调函数时,尚未看到它们。
明确声明
void draw();
void update(int value);
在您的_tmain
函数之前。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.