Предположим, что однажды я сохраняю прото-сообщение в файле как my_file.pb
На следующий день я добавляю новое сообщение в сообщение.
Затем я читаю my_file.pb с диска и пытаюсь получить доступ к новому полю. Будет ли это cra sh? это UB? обрабатывается ли он стандартом?
Я попытался прочитать документацию, и все, что я мог получить, было:
Вы можете добавлять новые поля в форматы сообщений, не нарушая обратную совместимость; старые двоичные файлы просто игнорируют новое поле при разборе. Поэтому, если у вас есть протокол связи, в котором в качестве формата данных используется буфер протокола, вы можете расширить свой протокол, не беспокоясь о том, чтобы сломать существующий код.
Это не говорит мне, какое поведение ожидать, если мой код пытается получить доступ к полю, изначально не определенному в сохраненном протоколе.