我有这个类型定义:
typedef union
{
unsigned Value;
unsigned Timestamp:16;
} BITFIELD;
并得到这个编译器警告:
BITFIELD bitfield;
// read from uninitialised memory - may result in unexpected behaviour
bitfield.Timestamp = 12;
现在,当我使用短而不是位域时,警告消失了:
typedef union
{
unsigned Value;
unsigned short Timestamp;
} DATATYPE;
我不确定如何看待这个警告 - 我不明白。不涉及未初始化的内存,也没有读取操作。恕我直言,编译器(VisualDSP++ 5.0 C/C++ Compiler)在这里是错误的。当我对Timestamp:32
使用位域时,警告也会消失。
有什么我没有意识到的吗?我可以放心地忽略此警告吗?