使用typedef结构从不兼容的指针类型进行赋值

时间:2014-04-22 16:38:58

标签: c struct typedef

通常当我收到这种错误消息时,这意味着结构对代码是隐藏的,因此我不能直接使用struct的变量。

在这种情况下,struct在同一个C文件中定义。

我将C文件粘贴到http://bpaste.net/show/224777/

在第330行,我有以下代码:

TrackBoxWidget *track_box_widget_new(GtkWidget *track_data_widget,GVariant *audio_in_devices) {
// can add more parameters here
TrackBoxWidget *widget = g_object_new(TRACK_BOX_WIDGET_TYPE,"audio_in_devices", audio_in_devices,NULL);
/*LINE 330*/    widget->track_data_widget=track_data_widget;
...

正如你所看到的那样;我试图在TrackBoxWidget typedef的widget中设置track_data_widget变量。不知怎的,我仍然得到这个错误。

任何想法?

1 个答案:

答案 0 :(得分:0)

在作业的左侧,您有widget->track_data_widget成员,TrackBoxWidget成员{aka struct _track_box_widget,类型为TrackDataWidget*

在作业的右侧,您有track_data_widget track_box_widget_new函数的参数GtkWidget*。由于这两个指针的类型不同,因此在没有强制转换的情况下不允许直接赋值。