c++ - C 和 C++ 之间的区别 ( lseek() )

标签 c++ c lseek

我正在尝试重新设计我以前从事的项目的 API,该项目是用 C 语言编写的,以便它可以在用 C++ 语言编写的应用程序中使用。

我在 C 语言中使用 lseek() 来查找表格、页面等。 我的问题是,是否可以像下面的示例代码那样在 C++ 中继续使用 lseek():

/* Read page data from an offset. It assumes that pagenum is zero-indexed*/
lseek(bq.unixfd, PAGE_SIZE + (PAGE_SIZE * bq.pagenum), SEEK_SET);

非常感谢

最佳答案

C++ 标准明确允许在 C++ 中使用 C 标准库:

17.2 The C standard library [library.c]
The C++ standard library also makes available the facilities of the C standard library, suitably adjusted to ensure static type safety.

这里的 lseek 函数不是由 C 标准定义的,而是由 POSIX.1 标准定义的。不管怎样,在支持它的系统上,它包含在标准 C 库中,并且可以像标准 C 函数一样供 C++ 程序使用。

也就是说,在不了解您的更多要求(可移植性、性能、用例等)的情况下,我不能说使用低级 IO 函数是个好主意还是切换到 C++ 会更好流。

关于c++ - C 和 C++ 之间的区别 ( lseek() ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44760245/

相关文章:

c++ - 如何用HDF5源代码编译c程序?

c - 寻找奇数的中间数

C 预处理器 - 家庭作业

c - 使用O_DIRECT打开的文件中的seek()和read()

c++ - 除以 2 的因子和字节操作 C++

c++ - 无法在 Windows 7 64 位上使用 STLsoft-1.9.124 编译 pantheios 1.0.0-beta216

c++ - 不是从 .begin()ing 迭代一个 STL 容器并环绕

c++ - 单程搜索和替换

C 使用 lseek/read/write 删除大型二进制文件的一部分