请帮助我了解在某些项目中定义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>
不足的原因是什么。
答案 0 :(得分:4)
这不是一个好习惯。这只会导致兼容性和可移植性降低。我看不出应该这样做的任何理由。 stdint.h
可以避免这种情况。
答案 1 :(得分:2)
<stdint.h>
在C99中已标准化。代码库可能早于<stdint.h>
,或者它需要在没有它的平台上进行编译。当没有可移植的固定大小typedef时,这在C89和K&R C中是非常普遍的事情。如果现代项目仍然希望能够在具有数十年历史的平台上进行编译,那么即使这些项目也可能绕过这些兼容性问题。
在我目前的公司中,我发现有人定义的类型与
<stdint.h>
中已经定义的类型相同。
如果您的代码库针对的是C99或更高版本,则没有必要。