C结构定义标准

HPe*_*rin 5 c c++ standards struct standards-compliance

我在过去几年里用C语言进行编程,并养成了将结构的typedef放在头文件中的习惯,并将其定义保留在源文件中,这样其他人就可以使用我的文件而不会让他们搞砸了.

// header file
typedef struct s_example EXAMPLE
Run Code Online (Sandbox Code Playgroud)
// source file
struct s_example {
       // something
};
Run Code Online (Sandbox Code Playgroud)

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

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

wol*_*k88 9

仅在头文件中具有声明的缺点是所有其他不包含该定义的源文件struct都不能实例化该实例struct,而只是指向它的指针.这是因为,对于那些其他源文件,您struct类型不完整.如果这对您的应用程序来说没问题,那么在标题中只有一个声明没有任何问题.