我试图让这个函数被一个按钮事件调用,但它一直说GTK_container没有在这个范围内声明
int record(void)
{
GtkWidget *window, *button1, *gpointer;
gtk_container_remove(GTK_WINDOW(window), button1);
}
答案 0 :(得分:0)
编译器不理解
的第二个参数的类型 void record(gtkWidget *window, *button1)
一定是
void record(gtkWidget *window, gtkWidget *button1)
如果button1
的类型与window
的类型相同(是gtkWidget *
吗?)。
和局部变量,声明为
gtkWidget *window, *button1;
应删除或重命名,以便不隐藏函数的参数范围
修改强>
将功能更改为
后int record(void)
注意你的功能的返回值。 return
的{{1}}值在哪里?
答案 1 :(得分:-1)
第1点。 (gtkWidget *window, *button1)
作为参数列表应为(gtkWidget *window, gtkWidget *button1)
。你错过了第二个变量的类型。
第2点。在函数中本地再次定义这两个变量的目的是什么?这不是必需的,IMO。
编辑:
由于您已将功能定义更改为返回int
,因此您还需要添加return <some integer value>
语句。否则,如果使用此函数的返回值将调用undefined behaviour。
从C11
标准文件第6.9.1章第12段
如果到达终止函数的},则使用函数调用的值 调用者,行为未定义。