C 为什么没有声明GTK_容器会出现错误

C 为什么没有声明GTK_容器会出现错误,c,gtk,C,Gtk,我试图通过按钮事件调用此函数,但它一直说GTK_容器未在此范围内声明 int record(void) { GtkWidget *window, *button1, *gpointer; gtk_container_remove(GTK_WINDOW(window), button1); } 第1点。(gtkWidget*窗口,*按钮1)作为参数列表,应为(gtkWidget*窗口,gtkWidget*按钮1)。您缺少第二个变量的类型 第2点。在函数内部局部再次定义这两个变量的

我试图通过按钮事件调用此函数,但它一直说GTK_容器未在此范围内声明

int record(void)
{
    GtkWidget *window, *button1, *gpointer;
    gtk_container_remove(GTK_WINDOW(window), button1);
}

第1点。
(gtkWidget*窗口,*按钮1)
作为参数列表,应为
(gtkWidget*窗口,gtkWidget*按钮1)
。您缺少第二个变量的类型

第2点。在函数内部局部再次定义这两个变量的目的是什么?这不是必须的,国际海事组织


编辑:

当您将函数定义更改为返回
int
时,还必须添加
return
语句。否则,如果使用此函数的返回值,将调用

来自标准文件第6.9.1章第12段的
C11

如果到达终止函数的},并且函数调用的值由 调用方的行为未定义


编译器不理解的第二个参数的类型

  void record(gtkWidget *window, *button1)
一定是

  void record(gtkWidget *window, gtkWidget *button1)
如果
按钮1
窗口的类型相同(是否也是
gtkWidget*
?)

和局部变量,声明为

  gtkWidget *window, *button1;
应删除或重命名,以不隐藏函数参数的范围

编辑:

在您将函数更改为

int record(void)

注意函数的返回值。带有
int
值的
返回值在哪里?

谢谢,现在是说gtk_容器没有在这个范围内声明,我不知道为什么这是第一次发生这种情况如果你没有收到作为参数的值,那么
窗口和
按钮1的值在合并
gtk_容器之前没有初始化,移除
-可以吗我不这么认为。。。那么,
gpointer
是如何在函数中使用的呢?不知道为什么gpointer是这样的,因为我没有使用它,如果我没有初始化它们,我也会得到它们的错误,真正的类型是
GtkWidget
,而不是
GtkWidget