c - 为什么 `struct stat` 中的字段名为 st_something?

标签 c struct stat

引用the structure for information about a file inode :

 dev_t       st_dev;     /* ID of device containing file */
 ino_t       st_ino;     /* inode number */
 mode_t      st_mode;    /* protection */
 nlink_t     st_nlink;   /* number of hard links */
 uid_t       st_uid;     /* user ID of owner */
 gid_t       st_gid;     /* group ID of owner */
 dev_t       st_rdev;    /* device ID (if special file) */
 off_t       st_size;    /* total size, in bytes */
 time_t      st_atime;   /* time of last access */
 time_t      st_mtime;   /* time of last modification */
 time_t      st_ctime;   /* time of last status change */
 blksize_t   st_blksize; /* blocksize for filesystem I/O */
 blkcnt_t    st_blocks;  /* number of blocks allocated */

我真的只是在寻找任何类型的答案。我注意到所有字段都以 st_ 开头,并且在 Internet 上找不到很好的解释。

最佳答案

这可以追溯到很久以前,一直到第一个 C 版本。他们没有用于结构成员的单独符号表,名称被添加到全局符号表中。导致明显令人讨厌的全局 namespace 污染。解决方法与您今天在枚举上使用的方法相同,在它们前面加上几个字母以避免名称冲突。

这是一种历史记录。当您看到具有这些成员名称的结构时,您就知道它是旧的

关于c - 为什么 `struct stat` 中的字段名为 st_something?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10325870/

相关文章:

c++ - C 或 C++ 中位域的最大大小?

c - 如何打印存档文件中的文件名?

c - 新手打印struct C编程问题

c - 为什么我们可以读取这个分配的指针中的任何字符而不写入它?

c - 指向同一变量的指针数组

c - 如何使用 C 将用户输入分配给变量?

通过 C 中的 SO 更改内存中的值

swift - 字符串类型的枚举与具有静态常量的结构

c - 警告 : format ‘%s’ expects argument of type ‘char *’ , 但参数 2 的类型为 ‘__dev_t’ [-Wformat=]

c - FUSE getattr 函数卡在 lstat 上