gpt4 book ai didi

c - 在 C 中,typedef 数组类型是公平的编码实践吗?

转载 作者:行者123 更新时间:2023-11-30 14:34:46 25 4
gpt4 key购买 nike

我想这里一定有重复的问题,但我找不到它。我最近正在开发一个 C 项目,在尝试使代码尽可能简洁的同时,我考虑使用 typedef 来定义具有特定类型的一致使用的数组。

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

struct entry ents[MAX_N_ENTRIES];

这段代码;

typedef struct entry entry_arr_t[MAX_N_ENTRIES];
entry_arr_t ents;

我担心的是,由于数组类型显然应该以与 C 中任何基本类型不同的方式处理,这种 typedef-ing 可能会在将来引起困惑,使其看起来像一个别名基元。

最佳答案

是的,可以为数组类型创建 typedef —— 标准 C 库中甚至有一个示例,即与 setjmp 一起使用的 jmp_buf 类型和longjmp

然而,它通常被认为是糟糕的风格,因为类型名称通常被假定为引用第一类类型,您可以使用它来执行所有普通第一类类型的操作,特别是:分配它们。但当然你不能在 C 中分配数组,因为它们不是一流的类型。

换句话说,考虑到问题中的 typedef,后来的程序员可能会认为可以编写

entry_arr_t ents1, ents2;

...

ents1 = ents2;

但是任务当然会失败。

您在 typedef 名称中包含“arr”这一事实确实减轻了这种担忧,使得假设的后来的程序员不太可能做出错误的假设。

关于c - 在 C 中,typedef 数组类型是公平的编码实践吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58848872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com