uint vs. unsigned int - 为什么不是 typedef uint?[关闭]

问题描述 投票:3回答:3

我想知道,如果有任何副作用,定义 uint.

typedef unsigned int uint;
c types integer typedef
3个回答
3
投票

负面的影响是风格上的,即自制类型会让你的代码变得不可读。没有人知道什么是"uint"是,所以使用这种自制类型的做法比使用 unsigned int.

与此相反,你应该使用标准化的整数类型,从 stdint.h.


4
投票

阅读这样的代码是很痛苦的。

如果你想省去一些打字的时间,那就使用 unsigned. 这是一个简写的 unsigned int 并且是标准C,标准C是可读C。

如果您试图对积分类型的尺寸和范围进行标准化,那么请使用在 <stdint.h> 而不是。


4
投票

你可能会想定义 uint 作为 typedef unsigned int uint; 要有类型 unsigned int 由于各种原因,用一个字来定义。

  • 出于文体上的原因,因为地方传统。
  • 与在 <stdint.h> 皆用 intuint 的有符号和无符号类型(如 int8_tuint8_t).
  • 用一个词来定义所有的基本类型,这可能是标记粘贴宏所需要的。当然 unsigned 将符合这一需要,但 ulong 仍然是有用的。

我可以看到这些潜在的问题。

  • 读你的代码,有些人可能不知道什么类型的东西。uint 是应该的,或者可能想知道是否 uint 被定义为意想不到的东西。
  • 如果你在一些系统上编译时,这个类型已经在标准头文件或一些库的头文件中定义了,你会得到一个编译错误,从而使你的代码可移植性降低。

另外,如果你是一个时间旅行者,可以在1974年末的某个时候到Dennis Ritchie在Murray Hill的办公室去看看,当时C语言的描述是这样的。C参考手册,之前 unsigned 甚至被发明并建议 uint 作为另一种选择,我相信肯-汤姆森会支持你 我相信Ken Thomson会支持你。同时也告诉Stu Feldman避免使用TABs:)

© www.soinside.com 2019 - 2024. All rights reserved.