簡體   English   中英

在單獨的頭文件中定義的類型的Typedef

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM