В общем, что я хочу, это какое-то время компиляции генерируется версия, которая связана с точным определением структуры. Если определение изменений структуры в любом случае (добавлено поле, переехал, может быть переименован), я хочу, чтобы версия изменить тоже.Создать идентификатор версии определения структуры?
Такая постоянная версия будет полезна при чтении ранее сериализации структуры, чтобы убедиться, что она по-прежнему совместимы. Альтернатива будет вручную отслеживание вручную указывается константа, которая имеет потенциально запутанные эффекты, если Инкрементирование забывается (десериализация производит мусор), а также поднимает вопрос, когда именно, чтобы увеличить его (в процессе разработки и тестирования, или только в каком-то выпуска).
Это может быть достигнут с помощью внешнего инструмента для создания хэша по определению структуры, но мне интересно, если это возможно с помощью компилятором C (и/или, возможно, его препроцессор) сам.
Это на самом деле какая-то форма самоанализа и поэтому я подозреваю, что это не может быть вообще возможно в ANSI C, но я был бы счастлив с решением, которое работает с GCC и лязгом.
Любая ссылка на это МС? – ouah
Добавлен пример –
Спасибо. Я думал о просто использовании sizeof, но это, конечно, не защищает от перемещаемых полей или других операций, которые приводят к любому ранее увиденному размеру. Для Windows API, вероятно, хорошая идея ограничить модификацию только добавлений полей, но в настоящее время я действительно не хочу идти так далеко ... –