参考SO问题:52164135
设置:我有一个函数可以将许多double值转换为预定义的字符串。输入是一个struct数组,我们从中连接两个double …
sprintf 如果在中断期间再次调用它,则会在中断期间失败(假设它使用重用的全局变量;它是否仅使用堆栈变量,然后它是可重入的)。
sprintf
所以如果你的中断处理程序正在调用 sprintf 并且在该调用期间发生新的,相同或更高优先级的中断,然后它可能失败。但是,在处理中断期间,通常会禁用中断,因此不能(不应该!)是发生相同类型的另一个中断。
但为什么在中断处理期间转换此原始数据?为什么不通过缓冲区将这些数据存储/传递给用户级例程并使该功能转换原始数据?这与中断处理程序应该尽可能短(快)的想法是一致的。