Проверка времени компиляции для изменений в структуре в C ++ - PullRequest
1 голос
/ 15 апреля 2020

У меня есть структура serializable в struct.h, которую я сериализую в serialize.h, используя собственный метод сериализации. Если в мою serializable структуру внесено изменение, мне нужно убедиться, что соответствующее изменение также внесено в serialize.h.
Типичный метод отражение использует для этого несколько макросов. Но природа нашей структуры и способ, которым мы массируем данные во время сериализации, не работают для этого.

Есть ли какой-нибудь способ выполнить некоторую проверку времени компиляции stati c, поэтому, если структура serializable изменилось любым способом без изменения serialize.h, тогда сборка не удастся.

Один из способов, о котором я подумал, но предпочитаю делать это в качестве крайней меры, это сделать копию определения serializable struct в serialize.h и использовать boost :: is_same , проверить с помощью сообщение об ошибке, запрашивающее соответствующее изменение в serialize.h

1 Ответ

0 голосов
/ 22 апреля 2020

Мы решили просто проверить контрольную сумму для кода. Если структура serializable изменена, то static_assert завершится ошибкой, и в сообщении об ошибке будет предложено обновить код и контрольную сумму. Это был компромисс, который мы сделали, чтобы сделать код более легким для чтения и в то же время гарантировать, что мы не забудем обновить сериализацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...