是否有任何扩展功能可在每个编译器上指定C enum
的大小?
海湾合作委员会
铛
MSVC
最佳答案
使用GCC,您无法指定确切的长度,但是可以使用-fshort-enums
占用最短的长度。例:
#include <stdio.h>
typedef enum
{
f1, f2
} foo;
int main()
{
printf("%i\n", sizeof(foo));
return 0;
}
编译:
gcc program.c -fshort-enums
输出:
1
但是,如果您想链接到任何内容,则必须确保查看标头的任何人也使用
-fshort-enums
,否则它将不符合ABI的要求(并且您会看到一些非常有趣的错误)。