【问题标题】:Difference between uint32 and uint32_t [duplicate]uint32和uint32_t之间的区别[重复]
【发布时间】:2012-11-01 23:03:56
【问题描述】:

可能重复:
Difference between different integer types

uint32和C/C++中的uint32_t有什么区别?

它们是否依赖于操作系统?

在哪种情况下我应该使用一种或另一种?

【问题讨论】:

  • 您应该尽可能选择标准类型。在这种情况下,uint32_t.
  • 伙计们。你可以在这里找到答案:stackoverflow.com/questions/11786113/…
  • 出于好奇——“_t”是什么意思?
  • “类型”的缩写。

标签: c++ c uint32 uint32-t


【解决方案1】:

uint32_t 是标准的,uint32 不是。也就是说,如果您包含<inttypes.h><stdint.h>,您将获得uint32_t 的定义。 uint32 是某些本地代码库中的 typedef,但除非您自己定义,否则不应期望它存在。自己定义是个坏主意。

【讨论】:

  • typedef uint32_t uint32?
  • 如果它不存在,你将无法编译你的程序,对吧?然后你可以像上面建议的那样做。这有什么大不了的?
  • @Rodrigo “大事”与#define writef printf 相同。从技术上讲,一切都会很好。但它引入了不必要的混乱。您会惊讶地发现,随着时间的推移,您会经常看到类似这种变形的简单类型定义,直到代码库出现 typedef uint16_t uint32 之类的东西,此时宇宙会爆炸。
  • 是的,我已经梦想过了:)
  • 为什么typedef uint32_t uint32 不好?肯定有人不应该使用合理的 typedef 因为有人可以创建疯狂的 typedef 的论点是错误的。例如,我们不会说铅笔是邪恶的,因为一个疯狂的同事可能会拿一支铅笔并用它刺伤某人。
【解决方案2】:

uint32_t在标准中定义,在

18.4.1 标头 <cstdint> 概要 [cstdint.syn]

namespace std {
//...
typedef unsigned integer type uint32_t; // optional
//...
}

uint32 不是,它是一些编译器提供的快捷方式(可能是typedef uint32_t uint32),方便使用。

【讨论】:

  • <cstdint> 成为标准之前,更有可能作为一个已知为无符号 32 位整数的类型定义。
  • 但是“32 位无符号整数”有什么不同呢?
猜你喜欢
  • 2014-08-16
  • 2011-04-08
  • 2012-11-24
  • 2013-06-05
  • 2021-09-29
  • 2020-05-27
  • 2016-03-23
  • 2012-08-11
  • 2012-11-24
相关资源
最近更新 更多