首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >句柄与虚空*函数代码样式

句柄与虚空*函数代码样式
EN

Stack Overflow用户
提问于 2014-03-12 19:37:15
回答 3查看 365关注 0票数 0

我正在编写一个库,我有一个函数:AddObj(HANDLE obj)。该函数的目的是添加不同类型的结构:

代码语言:javascript
运行
复制
struct1
struct2
... etc

问题是:就代码风格而言,使用HANDLE VOID***?**更好,还是使用其他东西更好?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-12 19:52:19

我会坚持void *HANDLE太通用了。如果您有特定类型的对象,并且希望使用“句柄”来传递指向这些对象的指针,那么它就不那么令人反感了--比如WINDOWHANDLEMODELHANDLE,它们分别被定义为'Window *and 'Model *‘。

票数 1
EN

Stack Overflow用户

发布于 2014-03-12 19:51:26

您应该使用GTK+使用的方法。

与您所建议的任何一种方法不同,您应该遵循GTK+的领导。它们使用不透明的结构指针。

's header file

代码语言:javascript
运行
复制
struct      GtkFrame;
GtkWidget * gtk_frame_new              (const gchar *label);
void        gtk_frame_set_label        (GtkFrame *frame, const gchar *label);
void        gtk_frame_set_label_widget (GtkFrame *frame, GtkWidget *label_widget);
void        gtk_frame_set_label_align  (GtkFrame *frame, gfloat xalign, gfloat yalign);

请注意,您不能意外地将GTKWindow传递给接受GTKFrame的函数。此方法仍然保留不透明句柄的所有优点。

票数 2
EN

Stack Overflow用户

发布于 2014-03-12 19:39:44

如果您可以使用句柄,这是因为有人(可能是您的.h文件之一)表示typedef void * HANDLE;

就个人而言,除非您使用的库已经定义了它的句柄操作,否则我会坚持使用void*。这为其他程序员省去了查找句柄是如何定义的麻烦。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22362072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档