使用GTK进行C编程指针转换

时间:2014-08-26 19:43:16

标签: c pointers gtk x11 gtkentry

看起来在GTK中你持有一个对象的引用,例如GtkEntry,但你用一个指向GtkWidget的指针来保持它。例如

GtkWidget* pointer = gtk_entry_new();

然后,当您想要设置该条目的文本时,您必须调用一个函数并使用该指针执行某些操作。

gtk_entry_set_text(GTK_ENTRY(pointer), "hello");

几个问题:

  
      
  1. 什么是" GTK_ENTRY()"事情?是函数调用还是类型转换?
  2.   
  3. 为什么不用大写字母,为什么不做(GtkEntry *)指针呢?
  4.   
  5. 为什么要这样做?为什么不在创建新条目时返回GtkEntry指针?
  6.   

1 个答案:

答案 0 :(得分:3)

GTK_ENTRY是一个宏,表现得像一个函数。它将其参数转换为GtkEntry*,但它可能 - 取决于像NDEBUG这样的宏 - 做额外的检查以验证提供的参数可能被强制转换。

它完全是CAPITAL,因为这是C中宏的一般惯例。

函数gtk_entry_new返回GtkWidget*而不是GtkEntry* GTK中的更多函数在GtkWidget*上运行,而C语言不提供继承,因此转换不能自动进行。 / p>