Как предотвратить вызов определенной функции или метода из подпрограммы прерывания? - PullRequest
2 голосов
/ 24 апреля 2019

Препятствие в использовании C ++ (вместо обработки C ++ как «C с несколькими дополнительными функциями») в низкоуровневой встроенной разработке вызвано прерываниями. Часто бывают случаи, когда время нужно измерять в отдельных циклах ЦП, а некоторые классы там не используются. Неявные преобразования, конструкторы копирования и подобные вещи могут вызывать проблемы при использовании внутри прерываний, особенно если они происходят за кулисами. С другой стороны, некоторые тщательно разработанные классы могли бы использоваться в прерываниях.

Возникает вопрос: существует ли элегантный способ сообщить компилятору о том, что определенный класс, функция или переменная (или просто строки кода) должны вызвать ошибку компиляции при использовании внутри прерывания? (не нужно так сильно полагаться на комментарии с указанием //Never call this from an interrupt!)

(Если нет, имеет ли смысл попытаться включить что-то подобное в следующий стандарт C ++? Я думаю о чем-то вроде того, как спецификатор constexpr сообщает компилятору, для чего функция или переменная может или не может использоваться для . Имеет ли смысл спецификатор nointerrupt или уже существует что-то, обеспечивающее эту функциональность?)

...