Union member and size of char array in c
The C standard says:


  The sizeof operator yields the size (in bytes) of its operand, which may be an expression or the parenthesized name of a type.


PROC is not an expression (that would require to go through an object of the union type first, e.g., sizeof(u-&gt;PROC)), so you have to use the type instead. And with a type, you must use parentheses:

typedef union {
    SETTINGS PROC;
    unsigned char BYTES[sizeof(SETTINGS)];
} PROCESS_SETTINGS;