gpt4 book ai didi

c - dev_t 和 ino_t 必须是整数类型吗?

转载 作者:太空狗 更新时间:2023-10-29 17:21:06 25 4
gpt4 key购买 nike

glibc 的文档保持它们是整数类型(不比 unsigned int 窄),但我没有找到说它们必须是整数类型的标准引用(另请参阅 time_t)。

所以最后,问题就变成了:是

#include <stdio.h>
#include <stdint.h>
struct stat st;

if (stat("somefile", &st) == 0) {
printf("%ju %ju\n", (uintmax_t)st.st_dev, (uintmax_t)st.st_ino);
}

便携。

最佳答案

POSIX标准要求 dev_t 为整数类型,ino_t 为无符号整数。

dev_t shall be an integer type.

fsblkcnt_t, fsfilcnt_t, and ino_t shall be defined as unsigned integer types.

因为 intmax_tuintmax_t 应该是“最大宽度”整数,所以您的代码是安全的。为了确保万一 st_dev 恰好为负,您可以将其写为:

    printf("%jd %ju\n", (intmax_t)st.st_dev, (uintmax_t)st.st_ino);

否则,您的代码是安全的。

关于c - dev_t 和 ino_t 必须是整数类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48169603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com