Is there any extension feature to specify size of C enum
on each compiler?
With GCC, you cannot specify the exact length, but you can have it take up the shortest length possible with -fshort-enums
. Example:
#include
typedef enum
{
f1, f2
} foo;
int main()
{
printf("%i\n", sizeof(foo));
return 0;
}
Compile:
gcc program.c -fshort-enums
Output:
1
However, if you ever want to link to anything, you have to make sure that whoever looks at your headers also uses -fshort-enums
or it will not be ABI compliant (and you will see some really funny errors).