gpt4 book ai didi

c - 相同类型如何无法匹配

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:17 26 4
gpt4 key购买 nike

我正在尝试在我的 GTK 2.0 应用程序中实现来自问题 How to create a cairo_t on a Gtk 2 window 的建议,我对结果感到困惑。错误输出为

planes_view.c: In function ‘draw_lines_planes’:
planes_view.c:145:33: warning: passing argument 1 of ‘gdk_cairo_create’ from incompatible pointer type [enabled by default]
cr = gdk_cairo_create((struct GdkDrawable *)(view->drawing_area));
^
In file included from /usr/include/gtk-2.0/gdk/gdk.h:33:0,
from /usr/include/gtk-2.0/gtk/gtk.h:32,
from planes_view.h:35,
from planes_view.c:34:
/usr/include/gtk-2.0/gdk/gdkcairo.h:33:10: note: expected ‘struct GdkDrawable *’ but argument is of type ‘struct GdkDrawable *’
cairo_t *gdk_cairo_create (GdkDrawable *drawable);
^

请注意,这两种冲突类型是相同的。怎么会这样?也许是两种同名的类型?即使是这样,我也需要知道如何正确地做到这一点。

违规行原本是

cr = gdk_cairo_create(view->drawing_area);

提示是绘图区域的声明类型是 GtkWidget *,所以我尝试了一个普通的类型转换:

cr = gdk_cairo_create((struct GdkDrawable *)(view->drawing_area));

结果如上所示。

最佳答案

相信编译器。 struct GdkDrawable *GdkDrawable * 不同。 GdkDrawable 已经是结构的 typedef:

typedef struct _GdkDrawable GdkDrawable;

正如 jku 所说,你把事情搞砸了。 gdk_cairo_create 需要一个 GdkDrawable,而您正试图为它提供一个 GtkWidget。您的 GdkDrawable 是存储在 GtkWidget(window 成员)中的 GdkWindow,您可以使用gtk_widget_get_window

关于c - 相同类型如何无法匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21141861/

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