Каковы плюсы и минусы непрозрачных указателей по сравнению с номерами идентификаторов с использованием языка программирования C?
В настоящее время я использую непрозрачные указатели в качестве стандартного метода инкапсуляции, но, глядя на API OpenGL, я думаю, что использование идентификаторов может быть лучшим выбором. Я хотел бы получить совет от опытных программистов на Си (я активно использую язык только ~ 2 года).
Вот мои первоначальные мысли, которые я хотел бы подтвердить или исправить.
Возможные плюсы для Id номеров:
Использование пулов объектов / памяти в реализации довольно просто, если использовать идентификаторы
Идентификационный номер не обязательно должен отображаться в системной памяти (в случае GL может ссылаться на графическую память)
Возможные минусы для Id номеров:
- Делает реализацию немного сложнее
Существует аналогичный вопрос, который учитывает ситуацию с использованием общих библиотек: должен ли я использовать целочисленный идентификатор или указатели для моих непрозрачных объектов? Мой вопрос не об общих библиотеках, а об общем случае скрытия деталей реализации от пользовательского кода.
Я полагаю, вы могли бы ввести определение MyObjectHandle, чтобы библиотека могла переключаться между номером идентификатора и непрозрачным указателем.
Вопрос в том,каковы плюсы и минусы непрозрачных указателей по сравнению с номерами идентификаторов, использующими язык программирования C?