繁体   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