Я пытаюсь изменить 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);
большое спасибо
Стандарт C ++ явно позволяет использовать стандартную библиотеку C в C ++:
17.2 Стандартная библиотека C [library.c] Стандартная библиотека C ++ также предоставляет возможности стандартной библиотеки C, соответствующим образом приспособленной к
обеспечить безопасность статического типа.
Здесь lseek
функция определяется не стандартом C, а стандартом POSIX.1. В любом случае, в системах, которые его поддерживают, он включен в стандартную библиотеку C и сделан доступным для программы C ++ точно так же, как стандарт С функции.
При этом, не зная больше о ваших требованиях (переносимость, производительность, варианты использования и т. Д.), Я не могу сказать, будет ли хорошей идеей использовать низкоуровневые функции ввода-вывода или было бы лучше переключиться на потоки C ++.
Других решений пока нет …