Препятствие в использовании C ++ (вместо обработки C ++ как «C с несколькими дополнительными функциями») в низкоуровневой встроенной разработке вызвано прерываниями. Часто бывают случаи, когда время нужно измерять в отдельных циклах ЦП, а некоторые классы там не используются. Неявные преобразования, конструкторы копирования и подобные вещи могут вызывать проблемы при использовании внутри прерываний, особенно если они происходят за кулисами. С другой стороны, некоторые тщательно разработанные классы могли бы использоваться в прерываниях.
Возникает вопрос: существует ли элегантный способ сообщить компилятору о том, что определенный класс, функция или переменная (или просто строки кода) должны вызвать ошибку компиляции при использовании внутри прерывания? (не нужно так сильно полагаться на комментарии с указанием //Never call this from an interrupt!
)
(Если нет, имеет ли смысл попытаться включить что-то подобное в следующий стандарт C ++? Я думаю о чем-то вроде того, как спецификатор constexpr
сообщает компилятору, для чего функция или переменная может или не может использоваться для . Имеет ли смысл спецификатор nointerrupt
или уже существует что-то, обеспечивающее эту функциональность?)