gpt4 book ai didi

c - 从不兼容的指针类型传递参数 1 of ‘gtk_label_set_selectable’

转载 作者:行者123 更新时间:2023-11-30 14:53:49 25 4
gpt4 key购买 nike

我正在尝试学习 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);
^~~~~

我应该忽略这个警告吗?如果不是的话我该怎么做才能让它消失呢?如果是的话我怎样才能在 eclipse 中消失。

最佳答案

在 GTK 中,您需要注意小部件的类型。

通常只使用 GtkWidget* 而不是更专门的类型,因为 gtk_*_new() 函数也返回一个指向 GtkWidget 的指针GtkLabel

要在需要 GtkLabel* 的函数中使用 GtkWidget*,您需要使用 GTK_LABEL(label) 进行转换。

这是您在调用 GTK_CONTAINER()GTK_BOX() 时已经使用的机制。

关于c - 从不兼容的指针类型传递参数 1 of ‘gtk_label_set_selectable’,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46998820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com