看起来在GTK中你持有一个对象的引用,例如GtkEntry
,但你用一个指向GtkWidget
的指针来保持它。例如
GtkWidget* pointer = gtk_entry_new();
然后,当您想要设置该条目的文本时,您必须调用一个函数并使用该指针执行某些操作。
gtk_entry_set_text(GTK_ENTRY(pointer), "hello");
几个问题:
- 什么是" GTK_ENTRY()"事情?是函数调用还是类型转换?
- 为什么不用大写字母,为什么不做(GtkEntry *)指针呢?
- 为什么要这样做?为什么不在创建新条目时返回GtkEntry指针?
答案 0 :(得分:3)
GTK_ENTRY是一个宏,表现得像一个函数。它将其参数转换为GtkEntry*
,但它可能 - 取决于像NDEBUG这样的宏 - 做额外的检查以验证提供的参数可能被强制转换。
它完全是CAPITAL,因为这是C中宏的一般惯例。
函数gtk_entry_new
返回GtkWidget*
而不是GtkEntry*
GTK中的更多函数在GtkWidget*
上运行,而C语言不提供继承,因此转换不能自动进行。 / p>