设置:部分字节访问
我在C99定义枚举:
enum MY_ENUM {TEST_ENUM_ITEM1, TEST_ENUM_ITEM2, TEST_ENUM_ITEM_MAX};
我保证用编译时断言
TEST_ENUM_ITEM_MAX
不超过UINT16_MAX
。我假设小字节顺序。我有以下参数的串行化 - 进入 - 缓冲功能:
PutIntoBuffer(uint8_t* src, uint32_t count);
我序列的可变保持一个值到缓冲区中。对于这个任务,我访问变量,抱着枚举,就像这样:
enum MY_ENUM testVar = TEST_ENUM_ITEM; PutIntoBuffer((uint8_t*) &testVar, sizeof(uint16_t));
问:它是合法的以这种方式来访问枚举(这是一个int)? C标准是否能保证预期的行为?
如果枚举可以比U8_MAX更大然后它可能会奇怪它转换为U8指针。 – Fredrik