我对c ++很陌生,但我已经掌握了基础知识.我在阅读其他代码时遇到了"Uint32"(各种大写)和类似数据类型的使用,但我找不到任何提及它们的文档.我知道"Uint32"是一个32位无符号整数,但我的编译器没有.我正在使用visual c ++ express,它无法从我所知道的任何形式识别它.
是否有一些编译器默认读取这些数据类型,或者让这些程序员将它们自己声明为类或#define常量?
我可以看到使用它们来准确知道整数的长度,因为正常的声明似乎因系统而异.使用它们还有其他优点或缺点吗?
pax*_*977 19
Unix平台在stdint.h中定义了这些类型,这是在编写可移植代码时确保类型大小调整的首选方法.
微软的平台没有定义这个标题,这在跨平台时是一个问题.如果您还没有使用Boost Integer Library,我建议让Paul Hsieh 使用此标头的便携式stdint.h实现,以便在Microsoft平台上使用.
更新: Visual Studio 2010及更高版本确实定义此标头.
Gre*_*ers 13
C99头文件stdint.h定义了这种形式的typedef uint32_t.据我所知,标准C++不提供命名空间std中的符号的cstdint版本,但是一些编译器可能,并且您通常能够包含来自C++代码的C99头.下一版本的C++将提供cstdint标头.
你会经常看到谁使用非标准形式这一主题的,比如别人的代码Uint32_t或Uint32或uint32等,他们通常只是提供了一个头,该项目内定义了这些类型.可能这段代码最初是在很久以前开发的,当C99编译器变得普遍时,他们从不打扰sed取代定义.