我已经看到以下两种在C API中声明不透明类型的样式.使用一种风格而不是另一种风格有明显的优势吗?
// foo.h
typedef struct foo * fooRef;
void doStuff(fooRef f);
// foo.c
struct foo {
int x;
int y;
};
Run Code Online (Sandbox Code Playgroud)
// foo.h
typedef struct _foo foo;
void doStuff(foo *f);
// foo.c
struct _foo {
int x;
int y;
};
Run Code Online (Sandbox Code Playgroud) 我在几个API中注意到,您可以创建一个内部使用且没有任何内容的结构.例如:
ALLEGRO_BITMAP *bmp;
...
bmp->(intellesense shows nothing)
Run Code Online (Sandbox Code Playgroud)
这些类型的结构如何工作?他们只是在内部处理吗?
REAL_ALLEGRO_BITMAP *realbmp = (REAL_ALLEGRO_BITMAP*)bmp;
Run Code Online (Sandbox Code Playgroud)
还是有更清洁的解决方案?
谢谢