对scene_render的未定义引用

Undefined reference to scene_render

本文关键字:未定义 引用 render scene      更新时间:2023-10-16

这是以下主要函数或我的程序

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(&myScene(; 时遇到错误。它说对它的引用是未定义的。它引用函数中的变量,该变量是const结构,而调用&myScene的所有其他实例都只是结构体。知道问题可能是什么吗?本实验主要是关于使用指针(如果有帮助的话(。

程序(在外部函数的帮助下(应该在命令窗口周围生成和抛出随机颜色的像素,将它们弹回以保留在屏幕中。删除该问题会导致程序成功编译,但随后加载一个似乎不执行任何操作的空白窗口。

问题

void scene_render(const struct Scene *s); 

你承诺scene_renderconst struct Scene作为参数。顺便说一下,您可以在此处放弃使用struct。C++知道Scene是一个struct.

但是定义的函数是

void scene_render(Scene *s)

这需要一个普通的旧的,非constScene,所以当链接器去寻找一个与承诺匹配的函数时,它找不到一个。

溶液

改变

void scene_render(Scene *s)

void scene_render(const Scene *s)

信守承诺。但要确保始终保持恒定的正确性。