[riot-devel] enums vs. macros

Oleg Hahm oliver.hahm at inria.fr
Wed May 13 08:12:57 CEST 2015


Dear replying IoTlers,

some time ago I had a discussion with Martine on GitHub about the usage of
enums for flags [1]. Martine convinced me that seems to be wise to prefer
macros over enums here, to avoid alignment issues. However, it feels somehow
wrong not to use enums for this purpose (it's easier for the developer *and*
the compiler if a valid data type is chosen). Does anyone know a trick around
the issues that Martine mentioned:
> Because flags have a width in memory that is in most cases smaller than
> sizeof(enum) (most bit fields I know of are 16 bits max, on most of our
> newer platforms, sizeof(enum) is however 32 bits). This results in every
> assignment needed to be cast to either uint8_t or uint16_t. With macros you
> don't need to cast since they are typeless.
>
> Making the enum packed makes it's width unpredictable in terms of alignment
> issues, when used in struct (which is not the case here, I know).

Cheers,
Oleg

[1] https://github.com/RIOT-OS/RIOT/pull/2614#discussion_r28941692
-- 
panic ("No CPUs found.  System halted.\n");
        linux-2.4.3/arch/parisc/kernel/setup.c
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.riot-os.org/pipermail/devel/attachments/20150513/25a6a381/attachment.sig>


More information about the devel mailing list