【发布时间】:2011-11-06 14:43:05
【问题描述】:
所以我正在使用 C++ 编程,据我所知,没有与 stdint.h 等效的 C++。这没问题,因为您可以获取 stdint 的副本并将其包含在内...但我的问题基本上是这样的,
这两段代码有什么区别:
struct FREQ{
unsigned int FREQLOHI :16;
//etc...
};
和
struct FREQ{
uint16_t FREQLOHI;
//etc...
}
除了位域的明显限制之外,还有性能/可移植性问题吗?哪个是首选?
【问题讨论】:
-
#include
将包含此标头。 -
您不能简单地“获取副本”。例如,从您的 Visual Studio 编译器中获取一个副本并将其放入 mingw 编译器中可能会出现错误行为。接下来,
cstdint应该是从 C++11 开始的可用标头。 -
据我所知,
在 2008 年或 2010 年不存在。 @Killian,我在 Visual Studio 工作,你可以在这里找到一份副本:link 这是 Microsoft Visual Studio 的符合 ISO C9x 标准的 stdint.h -
如果您的 C++ 编译器缺少 [stdint.h],请使用 Boost 版本。
-
<cstdint>和<stdint.h>肯定都带有 MSVC++ 2010。
标签: c++ bit-fields stdint