[英]Using of typedef struct
我想知道性能,声明等方面是否有差异。
我有一个名为features.h的文件,它具有结构定义:
typedef struct feat_record
{
...
...
} Feature;
我想在一个方法的另一个文件中使用它,在另一个文件.h文件中,我包含features.h。 我的问题是,在像这样的其他文件.h中声明方法之间是否存在区别:
void myMethod(Feature *f);
或像这样:
void myMethod (struct feat_record *f);
谢谢
这只是编码样式,除了主观的个人喜好没有其他区别。
通常建议在C和C ++之间的边界中的程序使用typedef版本,因为它使样式与C ++类型一致(在C ++中,声明结构对象时,struct关键字是多余的)。
Linux阵营主要鼓励struct标记版本,并由Linux内核代码样式指南(该结构指南没有提供除主观意见之外的太多依据)来实施。
没有明显的对与错,只需选择您喜欢的样式并始终坚持下去即可。
区别在于Feature
的typedef
声明(可能包含或不包含feat_record
的定义)必须在使用它的函数声明之前,而
void myMethod (struct feat_record *f);
单独作为接口声明; 它不依赖于前面的typedef
或其他声明。
不过,最好声明struct feat_record;
首先,如果只是为了避免不可避免的编译器警告。 并且在实现 myMethod
的文件中的函数声明之前,需要这样的声明。
最终,区别在于样式,即冗长:您应决定是否要在程序中将所有结构都引用为struct
。 它意味着更多的输入,但可以提醒您进行初始化。 (或者,如果您愿意,可以使用元数据标记来表示必须作为struct
处理的事物。)
至于编译的程序,没有可以想象的差异。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.