扫码阅读
手机扫码阅读

【一分钟聊嵌入式】简说C语言可重入函数

123 2024-08-31

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:【一分钟聊嵌入式】简说C语言可重入函数
文章来源:
一起学嵌入式
扫码关注公众号
文章摘要 - 可重入函数

本文是【一分钟聊嵌入式】系列中的一篇,旨在以简洁的方式讨论嵌入式编程中的一个重要概念—可重入函数。文章讨论了在程序开发过程中如何保证一个函数在多次或并发调用时保持执行结果的正确性。

可重入函数概念

可重入函数定义为即使在执行过程中被打断,其运行结果也不会受到影响的函数。相反,如果函数依赖于全局变量或静态局部变量、返回全局或静态变量、调用malloc()/free()、使用标准I/O函数或调用其他不可重入函数,则该函数不是可重入的。

判断与应用场景

判断函数是否可重入的依据包括是否使用了全局/静态变量、malloc()/free()、标准I/O功能或其他不可重入函数。在裸机编程或多任务编程中,考虑可重入性尤为重要,特别是当函数可能被中断或多次调用时。

如何实现可重入性

要实现函数的可重入性,需要避免上述不可重入的特征。此外,如果需要使用全局变量,必须通过同步与互斥机制(如关闭中断、使用互斥锁)来保护这些变量。

注意事项

在实际使用中,很多函数的内部实现对于程序员不可见,仅能通过函数声明来判断其可重入性。因此,在使用C标准库函数、第三方库函数、框架接口函数、操作系统API或自定义函数时,需要特别注意它们是否为可重入函数。

作者同时开放个人微信,邀请读者扫码添加,以便加入高质量的嵌入式交流群,实现共同学习与成长。读者如觉得文章有益,可以通过分享、点赞或表示“在看”来支持。

想要了解更多内容?

查看原文:【一分钟聊嵌入式】简说C语言可重入函数
文章来源:
一起学嵌入式
扫码关注公众号