提问人: 提问时间:10/29/2017 最后编辑:liberforce 更新时间:10/30/2017 访问量:642
从不兼容的指针类型传递“gtk_label_set_selectable”的参数 1
passing argument 1 of ‘gtk_label_set_selectable’ from incompatible pointer type
问:
我试图学习GTK编程。我用 c 编写了一个简单的程序。我正在尝试将指向标签的指针传递给 gtk_label_set_selectable() 函数,但我收到此警告:
#include <gtk/gtk.h>
#include <stdlib.h>
long i = 1;
void showadd(short u,GtkWidget *l)
{
char * s;
s = (char*)malloc(20);
sprintf(s,"%ld",++i);
gtk_label_set_text(GTK_LABEL(l),s);
}
int main (int argc, char *argv[])
{
gtk_init(&argc,&argv);
GtkWidget * win,* lable, * addButton,* SubstractButton,*box;
win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
addButton = gtk_button_new_with_label("+");
lable = gtk_label_new("1");
box = gtk_vbox_new(0,0);
g_signal_connect(win,"delete-event",G_CALLBACK(exit),NULL);
g_signal_connect(addButton,"clicked",G_CALLBACK(showadd),(gpointer)lable);
gtk_label_set_selectable(lable,1); //getting warring here
gtk_container_add(GTK_CONTAINER(win),box);
gtk_box_pack_start(GTK_BOX(box),lable,1,0,0);
gtk_box_pack_start(GTK_BOX(box),addButton,1,0,0);
gtk_widget_show_all(win);
gtk_main();
}
当我在eclipse CDT中编译它时,我在控制台中收到此警告:
../src/Calculator.c:35:28: warning: passing argument 1 of ‘gtk_label_set_selectable’ from incompatible pointer type [-Wincompatible-pointer-types]
gtk_label_set_selectable(lable,1);
^~~~~
我应该忽略此警告吗?如果没有,那么我能做些什么来让它消失?如果是,那么我怎样才能让日食消失。
答:
1赞
Gerhardh
10/29/2017
#1
在 GTK 中,您需要注意小部件的类型。
通常只使用而不是更专门的类型,因为函数还返回指向 instead of etc 的指针。GtkWidget*
gtk_*_new()
GtkWidget
GtkLabel
要在需要 a 的函数中使用 a,您需要使用 .GtkWidget*
GtkLabel*
GTK_LABEL(label)
这是您在调用 和 时已经使用的机制。GTK_CONTAINER()
GTK_BOX()
评论
GtkLabel *
GtkWidget *
GtkLabel *
GtkLabel *lable;