首页 > 解决方案 > uint vs. unsigned int - 为什么不用 typedef uint?

问题描述

我想知道是否有任何副作用定义uint.

typedef unsigned int uint;

标签: ctypesintegertypedef

解决方案


出于各种原因,您可能很想将类型定义uint为用一个单词定义:typedef unsigned int uint;unsigned int

  • 出于文体原因,由于当地传统。
  • <stdint.h>与所有使用intuint无符号类型(例如:int8_tuint8_t)中定义的类型不一致。
  • 使用单个单词定义所有基本类型,这可能需要标记粘贴宏。当然unsigned会满足这种需求,但ulong仍然有用。

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

  • 阅读您的代码,有些人可能不知道uint应该是什么类型,或者可能想知道是否uint被定义为意外的东西。
  • 如果您在标准头文件或某些库的头文件中已定义此类型的某些系统上进行编译,则会出现编译错误,从而降低代码的可移植性。

此外,如果您是时间旅行者,请在 1974 年末的某个时候在默里山的丹尼斯·里奇(Dennis Ritchie)办公室停留,当时 C 被本C 参考手册描述,甚至在此之前unsigned甚至被发明并建议uint作为替代。我相信肯汤姆森会支持你。并告诉 Stu Feldman 避免使用 TAB :)


推荐阅读