在C语言中,对数组类型进行类型定义是否公平?

问题描述 投票:0回答:1

我想这里肯定有一个重复的问题,但我找不到。我最近正在从事一个C项目,并且在尝试使代码尽可能简洁的同时,我考虑了对具有某种类型的一致使用的数组进行类型定义。

作为示例,假设结构类型为entry的数组始终具有固定长度MAX_N_ENTRIES。我想通过重写代码来减少冗余;

struct entry ents[MAX_N_ENTRIES];

此代码;

typedef struct entry entry_arr_t[MAX_N_ENTRIES];
entry_arr_t ents;

我担心的是,由于数组类型显然应该以与C中的任何原始类型不同的方式进行处理,因此这种类型定义可能会在将来引起混乱,使其看起来像是别名。基元。

c coding-style typedef conventions
1个回答
0
投票

是的,可以为数组类型创建typedef -在标准C库中甚至还有一个示例,即与jmp_bufsetjmp一起使用的longjmp类型。

然而,通常认为这是较差的样式,因为通常假定类型名称是指一类类型,您可以使用它来处理所有普通的一类类型的事情,尤其是:分配它们。但是,您当然不能在C中分配数组,因为它们不是一流的类型。

换句话说,给定您问题中的typedef,以后的程序员可能会合理地认为有可能编写代码

entry_arr_t ents1, ents2;

...

ents1 = ents2;

但是当然,分配会失败。

© www.soinside.com 2019 - 2024. All rights reserved.