gcc предоставляет дополнительные встроенные функции «для оптимизации».__builtin_trap: когда его использовать?
Один из них - void __builtin_trap (void)
, который по существу здесь, чтобы прервать программу, выполнив незаконную команду.
Из дока:
функция __builtin_trap заставляет программу выйти ненормально. GCC реализует эту функцию с использованием механизма, зависящего от цели (например, намеренно , выполняющего незаконную инструкцию) или путем вызывного прерывания. Используемый механизм может отличаться от выпуска к выпуску, поэтому вы не должны полагаться на какую-либо конкретную реализацию .
Зачем вам это использовать, а не exit(1)
или abort
? Почему разработчики gcc рассматривают это как функцию оптимизации?
Может быть, для легкой отсрочки откладывания? –
Если бы я строил систему с высокими требованиями к времени безотказной работы, то при стресс-тестировании, вызвав __builtin_trap() в случайные интервалы, это был бы жестокий и эффективный способ протестировать супервизор - множественную модель рабочего процесса. –
Вы имеете в виду вместо 'abort()'? – Barry