c - uint vs. unsigned int - 为什么不用 typedef uint?
问题描述
我想知道是否有任何副作用定义uint
.
typedef unsigned int uint;
解决方案
出于各种原因,您可能很想将类型定义uint
为用一个单词定义:typedef unsigned int uint;
unsigned int
- 出于文体原因,由于当地传统。
<stdint.h>
与所有使用int
和uint
无符号类型(例如:int8_t
和uint8_t
)中定义的类型不一致。- 使用单个单词定义所有基本类型,这可能需要标记粘贴宏。当然
unsigned
会满足这种需求,但ulong
仍然有用。
我可以看到这些潜在的问题:
- 阅读您的代码,有些人可能不知道
uint
应该是什么类型,或者可能想知道是否uint
被定义为意外的东西。 - 如果您在标准头文件或某些库的头文件中已定义此类型的某些系统上进行编译,则会出现编译错误,从而降低代码的可移植性。
此外,如果您是时间旅行者,请在 1974 年末的某个时候在默里山的丹尼斯·里奇(Dennis Ritchie)办公室停留,当时 C 被本C 参考手册描述,甚至在此之前unsigned
甚至被发明并建议uint
作为替代。我相信肯汤姆森会支持你。并告诉 Stu Feldman 避免使用 TAB :)
推荐阅读
- python-3.x - 是否可以使用 PyCharm 将 QtSvg for PyQt5 安装到 venv 中(不通过 apt-get 等使用 os 包)?
- javascript - 使用开关时出现意外令牌?
- php - 运行 ReactPHP http 服务器脚本的 Docker - 不暴露端口
- python - 熊猫:pd.PeriodIndex 之后的 reset_index
- matlab - 在分散的 xy 数据中查找连通分量
- clojure - 哈希映射为现有键返回 nil
- ios - 迅速:UIImageVIew 错误
- javascript - 为我的导航栏下拉菜单启用滚动条
- java - 按下输入时Java扫描仪不接受输入
- c# - 如何在服务层获取用户