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

C 为什么在大型项目中定义自定义数据类型是一种良好的做法,c,gnome,C,Gnome,请帮助我理解在一些项目中定义C类型的原因 在我目前的公司里,我发现有人定义的类型与中已经定义的类型相当 这种方法使得将第三方代码集成到项目中变得更加困难,程序员的工作也更加令人沮丧 但我也可以看到一些项目,比如gnome,也做同样的事情。例如,有一个gchar、gsize和gint32 因为我看不出有任何理由这样做,我恳请你解释一下 不充分的原因是什么。这不是好的做法。它只会降低兼容性和可移植性。我看不出有任何理由这样做stdint.h的存在就是为了避免这种情况。在C99中被标准化。可能代码库早

请帮助我理解在一些项目中定义C类型的原因

在我目前的公司里,我发现有人定义的类型与
中已经定义的类型相当

这种方法使得将第三方代码集成到项目中变得更加困难,程序员的工作也更加令人沮丧

但我也可以看到一些项目,比如gnome,也做同样的事情。例如,有一个gchar、gsize和gint32

因为我看不出有任何理由这样做,我恳请你解释一下


不充分的原因是什么。

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

在C99中被标准化。可能代码库早于
,或者它需要在没有它的平台上编译。在C89和K&R C中,当没有便携式固定尺寸的TypeDef时,这是一件非常常见的事情。即使是现代项目,如果它们的目标仍然是在已有数十年历史的平台上进行编译,也可能会保留这些兼容性垫片

在我目前的公司里,我发现有人定义的类型与
中已经定义的类型相当


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

返回到Windows类型UINT、WORD、BYTE等。当时没有特定的标准。谁说这是良好的做法?虽然不是强制性的,
typedef
有助于创建枚举类型或函数指针类型,以使代码更易于阅读/维护。但并非总是如此。