在低级别的嵌入式开发中,使用C++(而不是将C++视为“带有一些额外功能的C语言”)面临的一个障碍是中断。通常存在一些情况需要测量单个CPU周期的时间,并且一些类在那里没有任何用处。隐式转换、复制构造函数和类似的东西在中断中使用时可能会导致问题,特别是如果它们在幕后发生。另一方面,一些经过精心设计的类可以在中断中有意义地使用。
这引出了一个问题:是否有一种优雅的方法来向编译器发信号,指示特定的类、函数或变量(或仅仅是代码行)在中断中使用时应该抛出编译错误?(以避免过度依赖注释,例如
(如果没有,尝试将类似于此项添加到下一个C++标准中是否有意义?我想到的是像
这引出了一个问题:是否有一种优雅的方法来向编译器发信号,指示特定的类、函数或变量(或仅仅是代码行)在中断中使用时应该抛出编译错误?(以避免过度依赖注释,例如
//从中断中永远不要调用此项!
)(如果没有,尝试将类似于此项添加到下一个C++标准中是否有意义?我想到的是像
constexpr
限定符那样,可以告诉编译器一个函数或变量可以或不能用于什么目的。会不会出现nointerrupt
限定符这样的东西有意义,或者是否已经存在提供这种功能的东西?)
[[is_isr]]
用于描述程序,而[[isr_safe]]
则用于(成员)函数自身的文档说明。然后进行静态分析就可以了。 - StoryTeller - Unslander Monica[[isr_safe]]
听起来很有前途。 - πάντα ῥεῖ