为什么我得到错误GTK_container没有声明

时间:2015-03-20 06:20:27

标签: c gtk

我试图让这个函数被一个按钮事件调用,但它一直说GTK_container没有在这个范围内声明

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

2 个答案:

答案 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段

开始
  

如果到达终止函数的},则使用函数调用的值   调用者,行为未定义。