【发布时间】:2011-03-09 20:20:10
【问题描述】:
我正在使用 fstat(stream, &fs) 来获取 C 中的文件大小,它返回类型 off_t。
打印这个只是给出一个警告:
format ‘%d’ expects type ‘int’, but argument has type ‘off_t’
任何想法如何在没有编译器错误的情况下打印?
【问题讨论】:
-
@Matteo Italia 不,虽然这在标题中,但答案中没有任何内容可以确认如何打印 off_t
-
这是一个合并候选,因为副本上的答案并不是很清楚和完整。尽管在撰写本文时,我认为以下答案也不完全正确。
-
@Steve Jessop:问题在于,在很大程度上,没有真正好的答案。在最后一个 C89 编译器死去之前,也不会有。
-
@Jerry:如果需要 C89,则为真,但 IMO 对 C89 的答案与不合格 C 的答案是分开的,对我来说,这意味着“C 已过时不到 10 年”。
off_t无论如何都是 POSIX-y,C89+POSIX 是比单独的 C89 更罕见的组合,因为它排除了显而易见的情况。如果这确实是关于 C89 的真相,我会称一个答案说:“这是在 C99 中执行此操作的方法 - 在 C89 中无法便携地执行此操作”。为了获得额外的奖励,它也可以说明如何在 Windows 上执行此操作。