寂静的海 发表于 2013-8-29 12:15:45

白浪 发表于 2013-8-29 22:30:13

在通用的函数可以不用强制转换,但是对于不通用的,比如说文件获取之类的,如果不强制转换,就会有提取不到文件名的情况

ekd123 发表于 2013-8-30 22:20:20

GTK+ 的习惯是使用 GtkWidget * 给所有组件,但是 gtk_window_set_title 一类函数的第一个参数是组件自己的类型,因此需要转换一下,你也可以使用 (GtkWindow*) 这样的强制转换,但是!C 在指针上没有任何类型安全保证!因此 GTK_WINDOW 提供了 GObject 层面的类型安全保证,即如果你使用一个无效指针进行转换是会发生问题的——在终端打印一个报错信息,这样调试起来就特方便了。因此强烈建议使用宏而非强制转换。

如果你的 window 是 GtkWidget *,在使用 gtk_window_set_title(window, "abc") 时编译器会警告类型不匹配。
页: [1]
查看完整版本: gtk_init(NULL,NULL)与gtk_init(&argc,&argv)区别