Eon*_*nil 5 c compiler-construction size enums
enum是否有任何扩展功能可以指定每个编译器上的C 大小?
使用 GCC,您无法指定确切的长度,但可以使用 让它占据尽可能短的长度-fshort-enums。例子:
#include <stdio.h>
typedef enum
{
f1, f2
} foo;
int main()
{
printf("%i\n", sizeof(foo));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译:
gcc program.c -fshort-enums
Run Code Online (Sandbox Code Playgroud)
输出:
1
Run Code Online (Sandbox Code Playgroud)
但是,如果您想链接到任何内容,则必须确保查看您的标头的人也使用它-fshort-enums,否则它将不符合 ABI(并且您会看到一些非常有趣的错误)。