在单独的 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 表示未知类型。