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
か?