繁体   English   中英

使用typedef结构

[英]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内核代码样式指南(该结构指南没有提供除主观意见之外的太多依据)来实施。

没有明显的对与错,只需选择您喜欢的样式并始终坚持下去即可。

区别在于Featuretypedef声明(可能包含或不包含feat_record的定义)必须在使用它的函数声明之前,而

void myMethod (struct feat_record *f);

单独作为接口声明; 它不依赖于前面的typedef或其他声明。

不过,最好声明struct feat_record; 首先,如果只是为了避免不可避免的编译器警告。 并且在实现 myMethod的文件中的函数声明之前,需要这样的声明。

最终,区别在于样式,即冗长:您应决定是否要在程序中将所有结构都引用为struct 它意味着更多的输入,但可以提醒您进行初始化。 (或者,如果您愿意,可以使用元数据标记来表示必须作为struct处理的事物。)

至于编译的程序,没有可以想象的差异。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM