Утверждать без среды выполнения

0

Возможно ли иметь некоторую форму утверждения без среды выполнения? static_assert требует постоянного выражения, а assert является частью библиотеки C и, следовательно, полагается на вызовы операционной системы. Однако скажите, что у вас не было функций библиотеки, чтобы печатать что-либо на экране, и что у вас нет системных вызовов, чтобы заставить работу assert работать. Какой способ отладки вашей программы?

  • 0
    Вы можете написать свой собственный макрос / функцию assert, который отправляет строки отладки через UART или SPI.
  • 0
    сообщения отладки важны, если вы используете встроенную архитектуру, попробуйте добавить функцию, которая отправляет отладочную информацию, например, через последовательный порт.
Теги:
assert

1 ответ

1

Все assert - это call abort() для преднамеренного сбоя программы, если ее аргумент равен нулю. Если ваша платформа не имеет функции abort, вы можете написать ее, которая соответствующим образом завершает программу. Или, если вы abort но это неподходящее, вы можете написать собственный собственный макрос assert который сделает что-то еще. (Предположительно, ваша программа имеет какой-то способ производства продукции, или ваш вопрос будет намного шире, чем сделать полезным assert.)

Если причина, по которой у вас нет системных вызовов, заключается в том, что вы пишете ядро (и, следовательно, вы отвечаете за выполнение системных вызовов), обратите внимание, что явный эквивалент ошибки утверждения называется паникой ядра.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню