我正在编写一个库,我有一个函数:AddObj(HANDLE obj)
。该函数的目的是添加不同类型的结构:
struct1
struct2
... etc
问题是:就代码风格而言,使用HANDLE
或 VOID*
**?**更好,还是使用其他东西更好?
发布于 2014-03-12 19:52:19
我会坚持void *
。HANDLE
太通用了。如果您有特定类型的对象,并且希望使用“句柄”来传递指向这些对象的指针,那么它就不那么令人反感了--比如WINDOWHANDLE
、MODELHANDLE
,它们分别被定义为'Window *and 'Model *
‘。
发布于 2014-03-12 19:51:26
您应该使用GTK+使用的方法。
与您所建议的任何一种方法不同,您应该遵循GTK+的领导。它们使用不透明的结构指针。
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的函数。此方法仍然保留不透明句柄的所有优点。
发布于 2014-03-12 19:39:44
如果您可以使用句柄,这是因为有人(可能是您的.h文件之一)表示typedef void * HANDLE;
。
就个人而言,除非您使用的库已经定义了它的句柄操作,否则我会坚持使用void*。这为其他程序员省去了查找句柄是如何定义的麻烦。
https://stackoverflow.com/questions/22362072
复制相似问题