[英]Typedef of a type defined in a separate header file
我有两个头文件:
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
,但这将导致与报头的紧密耦合,而用另一个包含灵活数组成员的缓冲区定义来替换它会更加困难。
将这样的typedef
引入另一个头文件中定义的结构是否很常见,以便在包括头文件(但不包括另一个头文件的一个头文件)时在c
文件中提供其实现?
不,那将是一个错误。
你可能是说
typedef struct sub_buffer slc_buffer;
在这种情况下,即使没有在您的作用域中定义这些类型,也总是可以向类型引入typedef别名。
这就是经典的自引用“节点”起作用的原因:
typedef struct node node;
struct node {
node *next;
void *data;
};
注意第一行如何使用未知类型的typedef
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.