以下是主要功能或我的程序
void scene_render(const struct Scene *s);
int main(void) { //leave main as is
struct Scene myScene;
scene_init(&myScene);
int keep_going = 1;
while (keep_going == 1) {
cons_clear_screen(); //clear off-screen display buffer
scene_render(&myScene); //render the scene to display buffer
cons_update(); //copy the display buffer to the display
cons_sleep_ms(ANIMATION_DELAY); //pause
scene_update(&myScene); //update the scene
int key = cons_get_keypress(); //see if the user has pressed a key
if (key != -1) {
keep_going = 0;
}
}
return 0;
}
void scene_render(Scene *s)
{
cons_clear_screen();
for(int i=0; i<NUM_PARTICLES; i++)
{
particle_render(&s->parts[i]);
}
}
当我在Cygwin上运行makefile命令时,它会传递错误并开始编译,但在遇到scene_render(&amp; myScene);时会遇到错误。它说对它的引用是不确定的。它指的是函数中的变量是一个const结构,而调用&amp; myScene的所有其他实例都只是结构。知道问题可能是什么?这个实验主要是关于使用指针,如果有帮助的话。
程序(在外部函数的帮助下)应该在命令窗口周围生成并抛出随机颜色的像素,将它们弹回以使它们保持在屏幕上。删除该问题会导致程序成功编译,但随后会加载一个似乎什么都不做的空白窗口。
答案 0 :(得分:1)
用
void scene_render(const struct Scene *s);
您承诺scene_render
将const struct Scene
作为参数。顺便说一句,您可以在这里放弃使用struct
。 C ++知道Scene
是struct
。
但是定义的函数是
void scene_render(Scene *s)
采用普通的非const
Scene
,所以当链接器寻找与承诺匹配的函数时,它找不到。
更改
void scene_render(Scene *s)
到
void scene_render(const Scene *s)
守信用。但要确保const-correctness始终保持不变。