我正在读dos(1992)的旧C代码,在该代码中,我找到了对filelength
的调用。
我去MSDN了解这个功能:
从Visual C ++ 2005开始,不推荐使用此POSIX函数。请改用符合ISO C ++的
_filelength
。
我试着在POSIX文档中找到关于这个函数的更多信息,但除了MSDN参考文献之外我什么都没找到。
所以:
答案 0 :(得分:2)
在这种情况下,POSIX是"便携式操作系统接口"这是一系列标准,最初试图使所有不同的UNIX系统兼容。因此,您可以针对POSIX API进行编写,并且如果您没有使用非POSIX API,您可能会拥有一个可以在各种UNIX变体上运行的程序,以及后来支持其他POSIX操作系统的程序。 / p>
据我所知,filelength
是一个特定于平台的C调用。它可能是特定编译器支持的流行调用,但可能是特定平台或平台集支持的流行调用。
处理文件的POSIX规范是" POSIX.1:核心服务"它似乎从未包含filelength
函数。可能是微软试图将它添加到POSIX并失败,或者可能是微软错误地记录了它是POSIX并修复了他们的文档与上面提到的删除。它也可能是一个古老的包含POSIX.1,后来被删除(这是最不可能的选项)。
当前版本的POSIX.1是第7版。它于2008年发布,也被称为" IEEE Std 1003.1"因为两个标准委员会决定调整标准,以减少野外标准。 You may browse the api bits of POSIX.1 here.
要使用符合POSIX标准的API查找文件大小,请使用stat(char* filename, (struct stat*) s)
,调用然后阅读st.st_size
字段,或者您可以使用老式的方式打开它,寻求结束(fseek
),然后使文件指针偏移ftell
。