【问题标题】:assignment from incompatible pointer type using a typedef struct使用 typedef 结构从不兼容的指针类型赋值
【发布时间】:2014-04-22 16:38:57
【问题描述】:

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

在这种情况下,结构体是在同一个 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 类型定义的小部件内设置 track_data_widget 变量。不知何故我仍然得到这个错误。

有什么想法吗?

【问题讨论】:

  • 成员track_data_widgetTrackDataWidget类型,但参数track_data_widgetGtkWidget类型?
  • 哎呀 :) 感谢您通知我。检查

标签: c struct typedef


【解决方案1】:

在您的作业左侧有widget->track_data_widget,它是TrackBoxWidget(又名struct _track_box_widget)的成员,类型为TrackDataWidget*

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 2019-08-09
    • 2021-04-07
    • 1970-01-01
    相关资源
    最近更新 更多