为什么在大型项目中定义自定义数据类型是一种好习惯

时间:2019-06-26 19:33:23

标签: c gnome

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

在我目前的公司中,我发现有人定义的类型与Unit: milliseconds expr min lq mean median uq max neval sort(sample(n, replace = TRUE)) 49.96651 52.58784 61.19775 55.09312 58.43035 160.16275 100 tabulate(sample(n, replace = TRUE), n) 13.74391 14.44253 17.22742 15.99816 17.54367 48.72374 100 sort_sample(n) 12.80741 14.40371 17.98320 15.31699 17.53548 63.21692 100 中已经定义的类型相同。

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

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

因为我看不到这种方法的任何原因,所以请解释一下。

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

2 个答案:

答案 0 :(得分:4)

这不是一个好习惯。这只会导致兼容性和可移植性降低。我看不出应该这样做的任何理由。 stdint.h可以避免这种情况。

答案 1 :(得分:2)

<stdint.h>在C99中已标准化。代码库可能早于<stdint.h>,或者它需要在没有它的平台上进行编译。当没有可移植的固定大小typedef时,这在C89和K&R C中是非常普遍的事情。如果现代项目仍然希望能够在具有数十年历史的平台上进行编译,那么即使这些项目也可能绕过这些兼容性问题。

  

在我目前的公司中,我发现有人定义的类型与<stdint.h>中已经定义的类型相同。

如果您的代码库针对的是C99或更高版本,则没有必要。