設置:部分字節訪問
我在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