Различие между 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++.