最近我正在查看“dirent”结构(在 dirent.h 中),对它的定义有点困惑。
注意:这个头文件来自我学校的一台 Solaris 机器。
typedef struct dirent {
ino_t d_ino;
off_t d_off;
unsigned short d_reclen;
char d_name[1];
} dirent_t;
特别是 d_name 字段。这将如何在操作系统中工作?如果您需要存储一个以空结尾的字符串,那么单个字符的数组有什么用?我知道您可以通过数组的第一个元素获取数组的地址,但我仍然感到困惑。显然发生了什么事,但我不知道是什么。在我家里的 Fedora Linux 系统上,这个字段被简单地定义为:
char d_name[256];
现在,由于显而易见的原因,这更有意义。有人可以解释为什么 Solaris 头文件定义结构吗?