在单独的 header 文件中定义的类型的 Typedef
Typedef of a type defined in a separate header file
我有两个 header 文件:
src/util/buffer.h
:
//Namespace Src Util Buffer sub
struct sub_buffer{
size_t size;
void *buf;
};
//tons of static inline functions
src/lib_context.h
:
//Namespace Src Lib Context slc
typedef struct sub_buffer slc_buffer; // Is this typedef ok?
struct slc_context{
//definition
};
void slc_set_buffer(slc_buffer *buf_ptr);
//tons of other structs and functions
我不确定的是typedef struct sub_buffer slc_buffer;
。可以选择包含 src/util/buffer.h
,但这会导致与 header 的紧密耦合,并且更难用例如 header 替换它。包含灵活数组成员的另一个缓冲区定义。
将这样的 typedef
引入另一个 header 文件中定义的结构是否很常见,因此当包含 [=] 时,它的实现将在 c
文件中提供29=](但不包括一个 header 到另一个 header 文件)?
不,那将是一个错误。
你的意思可能是
typedef struct sub_buffer slc_buffer;
在这种情况下没问题,您始终可以为类型引入 typedef 别名,即使这些类型没有在您所在的范围内定义。
这就是经典自引用 "node" 起作用的原因:
typedef struct node node;
struct node {
node *next;
void *data;
};
注意第一行如何使用 typedef
表示未知类型。
我有两个 header 文件:
src/util/buffer.h
:
//Namespace Src Util Buffer sub
struct sub_buffer{
size_t size;
void *buf;
};
//tons of static inline functions
src/lib_context.h
:
//Namespace Src Lib Context slc
typedef struct sub_buffer slc_buffer; // Is this typedef ok?
struct slc_context{
//definition
};
void slc_set_buffer(slc_buffer *buf_ptr);
//tons of other structs and functions
我不确定的是typedef struct sub_buffer slc_buffer;
。可以选择包含 src/util/buffer.h
,但这会导致与 header 的紧密耦合,并且更难用例如 header 替换它。包含灵活数组成员的另一个缓冲区定义。
将这样的 typedef
引入另一个 header 文件中定义的结构是否很常见,因此当包含 [=] 时,它的实现将在 c
文件中提供29=](但不包括一个 header 到另一个 header 文件)?
不,那将是一个错误。
你的意思可能是
typedef struct sub_buffer slc_buffer;
在这种情况下没问题,您始终可以为类型引入 typedef 别名,即使这些类型没有在您所在的范围内定义。
这就是经典自引用 "node" 起作用的原因:
typedef struct node node;
struct node {
node *next;
void *data;
};
注意第一行如何使用 typedef
表示未知类型。