Некоторые библиотеки, такие как FFmpeg, делают что-то подобное.FFmpeg имеет struct AVFrame
, чьи sizeof
не должны использоваться приложениями, поскольку новые поля могут быть добавлены только с незначительным повышением версии.Библиотека предоставляет функции для выделения struct AVFrame
;эти функции не позволяют размещать их массивы.Необходимо позаботиться о том, чтобы не использовать более старую минорную версию, чем приложение, с которым была связана ссылка;не все механизмы разделяемых библиотек поддерживают второстепенные версии.
Я думаю, что это немного уродливо, но если приложения не делают запрещенных вещей, все должно быть в порядке.Более чистый метод - сохранить структуру структур, которые должны быть расширены.