有人可以解释为什么成员X
的大小与枚举类型本身不同,尽管被明确定义为LL
?(enum e_x)X
我需要强制转换相同枚举类型的成员以确保它具有与类型相同的大小,这似乎违反直觉。
#include <stdio.h>
#include <limits.h>
enum e_x { X = 0LL, M = LLONG_MAX };
int main() {
printf("%zu %zu %zu %zu\n",
sizeof X,
sizeof((enum e_x)X),
sizeof(enum e_x),
sizeof(long long));
}
输出:
4 8 8 8
预期的:
8 8 8 8
将枚举传递给使用的函数时如何处理它va_arg
?