【发布时间】:2010-10-08 11:05:37
【问题描述】:
最近我在看“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 头文件会这样定义结构吗?
【问题讨论】: