[英]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.