Cadre:Accès partiel à C de par octet ENUM
Je définir une ENUM en C99:
enum MY_ENUM {TEST_ENUM_ITEM1, TEST_ENUM_ITEM2, TEST_ENUM_ITEM_MAX};
Je veillerai avec le temps affirme que la compilation
TEST_ENUM_ITEM_MAX
ne dépasse pasUINT16_MAX
. Je suppose que peu endian comme ordre de byte.I ont une fonction serialize-en-tampon avec les paramètres suivants:
PutIntoBuffer(uint8_t* src, uint32_t count);
I sérialiser une variable contenant une valeur dans une mémoire tampon. Pour cette tâche, je avoir accès à la variable, tenant le ENUM, comme ceci:
enum MY_ENUM testVar = TEST_ENUM_ITEM; PutIntoBuffer((uint8_t*) &testVar, sizeof(uint16_t));
Question: Est-il légitime d'accéder au ENUM (qui est un int) de cette façon? La norme C garantit-elle le comportement souhaité?
Si l'enum peut être plus grand que U8_MAX, il sera probablement étrange de le lancer sur le pointeur U8. – Fredrik