от
Я строю программного обеспечения для встраиваемых систем, что только кросс-компилятор для -с std=с 98. Мы хотим отправить данные закодированы с помощью protobuf 2 к серверу. К сожалению, protobuf теперь требуется C 11. В https://github.com/protocolbuffers/protobuf/issues/2780 он предположил, что "мы можем создать филиал, который работает для C 98. В филиал принимаются только исправления ошибок, но не новые функции, оптимизация и т. д." https://github.com/protocolbuffers/protobuf/issues/3492 "код должен компилироваться с-с std=с 03, прежде чем мы перейдем к C 11 только" был закрыт, но я не могу найти соответствующей фиксации. Я пытался построить несколько версий с-std=c 98 и,- с std=с 03, но всегда получаю "ошибка: использование необъявленный идентификатор 'va_copy", который является специфичным для C 11 и позже. Может кто посоветует какую версию (если таковые имеются) строит с-std=с 98 или-std=с 03? Если это не возможно, я мог бы упасть обратно на https://github.com/nanopb/nanopb который является реализацией стандарта ANSI Си.

Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.

1 Ответ

0 голосов
от
Попробуйте использовать в 3.5.0. Освобождение после 3.5.0 имеет строгое требование с 11, 3.5.0 этого быть не должно.
...