gpt4 book ai didi

使用 GTK 的 C 编程指针转换

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:28 25 4
gpt4 key购买 nike

看起来,在 GTK 中,您持有对对象的引用,例如 GtkEntry,但您通过指向 GtkWidget 的指针持有它。例如

GtkWidget* pointer = gtk_entry_new();

然后当你想做一些事情,比如设置那个条目的文本时,你必须调用一个函数并对那个指针做一些事情。

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

几个问题:

  1. What is the "GTK_ENTRY()" thing? Is it a function call or typecast?
  2. Why is it in all Capital letters, why not do something like (GtkEntry*)pointer?
  3. Why even do this? Why not return a GtkEntry pointer when you create a new Entry?

最佳答案

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

它全部使用大写字母,因为这是 C 语言中宏的通用约定。

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

关于使用 GTK 的 C 编程指针转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25513981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com