ユニオンepoll_data_t
は次のようになります。
typedef union epoll_data {
void *ptr;
int fd;
__uint32_t u32;
__uint64_t u64;
} epoll_data_t;
これはより一般的な C の質問ですが、アンダースコアなしの uint{32,64} ではなく、先頭の二重アンダースコア __uint{32,64} 型が使用されるのはなぜですか? アンダースコアバージョンを使用する理由/時期はよくわかりませんが、アンダースコアなしの uint32 は、外の世界に対して公に変更可能なユニオンで使用するのに適していると思いました。