Linux:
struct dirent { ino_t d_ino; off_t d_off; unsigned short d_reclen; unsigned char d_type; char d_name[256]; };
Mac:
struct dirent { ino_t d_ino; uint16_t d_reclen; uint8_t d_type; uint8_t d_namlen; char d_name[__DARWIN_MAXNAMLEN + 1]; };
DIR* なんかはユーザコードに中身を触らせない設計になってるから素晴らしい