Различие между C и C++ ( lseek())

Я пытаюсь изменить API моего предыдущего проекта, над которым я работал, написанного на C, таким образом, чтобы его можно было использовать в приложении, написанном на языке C++.

Я использовал на языке Си lseek() для погони таблицы, страниц и т. д. Мой вопрос, это нормально, чтобы все еще использовать lseek() в C++ способ, которым я использовал его, как пример кода ниже:

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

большое спасибо

1 ответ

Стандарт C++ явно позволяет использовать стандартную библиотеку C в C++:

17.2 Стандартная библиотека C [library.c]
Стандартная библиотека C++ также предоставляет средства стандартной библиотеки C, соответствующим образом настроенные для обеспечения безопасности статических типов.

Здесь lseek функция определяется не стандартом C, а стандартом POSIX.1. В любом случае, в системах, которые его поддерживают, он включен в стандартную библиотеку C и сделан доступным для программы C++ точно так же, как и стандартные функции C.

При этом, не зная больше о ваших требованиях (переносимость, производительность, варианты использования и т. Д.), Я не могу сказать, будет ли хорошей идеей использовать низкоуровневые функции ввода-вывода или было бы лучше переключиться на потоки C++.

Другие вопросы по тегам