为什么在大型项目中定义自定义数据类型是好的做法

Why it is good practice to define custom datatypes in larger projects

请帮助我了解在某些项目中定义 C 类型的原因。

在我现在的公司里,我发现有人定义的类型等同于 <stdint.h> 中已经定义的类型。

这种方法使得将 3party 代码集成到项目中变得更加困难,并且使程序员的工作更加令人沮丧。

但我也看到一些项目,比如 gnome,也是这样做的。例如有 gchar、gsize 和 gint32。

因为我看不出有任何理由采用这种方法,所以恳请解释。

<stdint.h> 不够的原因是什么。

这不是好的做法。它只会导致兼容性和可移植性降低。我看不出有任何理由应该这样做。 stdint.h 的存在是为了避免这种情况。

<stdint.h> 在 C99 中被标准化。也许代码库早于 <stdint.h>,或者它需要在没有它的平台上编译。当没有可移植的固定大小 typedef 时,在 C89 和 K&R C 中这是一件非常常见的事情。如果现代项目仍然旨在在 decades-old 平台上进行编译,那么即使是现代项目也可能会保留这些兼容性垫片。

In my current company I found that someone made definitions of types that are equivalent of those that are already defined in <stdint.h>.

如果您的代码库以 C99 或更高版本为目标,则没有必要。