C 结构定义标准

C struct definition standard

我这几年一直在用C编程,养成了一个习惯,就是把struct的typedef放在头文件里,而把它的定义留在源文件里,这样别人就可以不用我的文件了让他们把事情搞砸。

// header file
typedef struct s_example EXAMPLE

// source file
struct s_example {
       // something
};

这样做有什么问题吗,我应该让其他人知道我对我的结构做了什么吗?

我问这个是因为我看到很多人在头文件中显示所有内容。

仅在 header 文件中声明的缺点是所有其他不包含 struct 定义的源文件无法实例化 struct 的实例,但只是指向它的指针。这是因为,对于那些其他源文件,您的 struct 是一个 incomplete type。如果这对您的应用程序没问题,那么在 header.

中声明就没有问题