uint32_t
是标准用法,而uint32
则不是。也就是说,如果你包含<inttypes.h>
或者<stdint.h>
头文件,你将得到一个uint32_t
的定义。另外,uint32
是一种在某些本地代码库中的typedef,但是除非你自己定义它,否则不能保证它存在。而且自己定义它是一个坏主意。
#define writef printf
一样。从技术上讲,事情会很顺利。但它引入了不必要的混乱。你会惊讶地发现,像这样的简单typedef随着时间的推移会变形,直到代码库有类似typedef uint16_t uint32
的东西,此时宇宙就会爆炸。 - William Purselltypedef uint32_t uint32
不好?显然,认为某人不应该使用明智的typedef,因为有人可能会创建一个疯狂的typedef的论点是错误的。例如,我们不会说铅笔是邪恶的,因为一个疯狂的同事可能会拿起一支铅笔并用它刺伤别人。 - Jason Harrisuint32_t
在标准中有定义,位于
<cstdint>
概览[cstdint.syn]namespace std {
//...
typedef unsigned integer type uint32_t; // optional
//...
}
uint32
并不是一种数据类型,它只是一些编译器提供的快捷方式(可能是通过typedef uint32_t uint32
实现),以便于使用。
<cstdint>
标准化之前,很可能将其作为某个已知为无符号32位整数的类型定义。请注意,这里不会提供其他解释或信息。 - Benjamin Lindley
uint32_t
。 - John Dibling