gcc与可重入代码
GCC是否为所有场景生成可重入代码?否,您必须编写可重入代码。否,GCC不可能保证您编写的可重入代码 但是,在主要平台上,编译器生成或包含的代码(如数学内部函数或函数调用)是可重入的。由于GCC不支持常见的不可重入函数调用的平台,如8051,因此存在可重入性编译器问题的风险很小gcc与可重入代码,gcc,embedded,real-time,reentrancy,Gcc,Embedded,Real Time,Reentrancy,GCC是否为所有场景生成可重入代码?否,您必须编写可重入代码。否,GCC不可能保证您编写的可重入代码 但是,在主要平台上,编译器生成或包含的代码(如数学内部函数或函数调用)是可重入的。由于GCC不支持常见的不可重入函数调用的平台,如8051,因此存在可重入性编译器问题的风险很小 有些GCC端口存在bug和问题,例如MSP430版本。可重入性不是编译器可以控制的,而是由程序员编写可重入代码。为此,您需要避免所有明显的陷阱,例如全局变量(包括本地静态变量)、共享资源、线程、对其他不可重入函数的调用等
有些GCC端口存在bug和问题,例如MSP430版本。可重入性不是编译器可以控制的,而是由程序员编写可重入代码。为此,您需要避免所有明显的陷阱,例如全局变量(包括本地静态变量)、共享资源、线程、对其他不可重入函数的调用等
已经说过,一些小型嵌入式系统的交叉编译器(例如8051)可能不会默认生成可重入代码,并且可能需要通过特定的函数来请求可重入代码,例如通过C++ >代码> >代码>。为可重入性编写函数代码仍然是您的责任
即使函数为可重入性而正确编码,C编译器也不会生成可重入代码,这将是一个例外,而不是规则,并且是由于架构约束的原因(例如没有足够的资源来支持堆栈,因此生成静态帧)。在这些情况下,编译器文档应该清楚地说明这一点 您可能会读到一些文章:你的意思是说有GCC工具链支持可重入代码,但存在一些问题?但是,有没有生成可重入代码的GCC变体?这个查询是因为我在开发与uC/OS-II RTOS相关的应用程序时遇到了一个信息,它需要有一个生成可重入代码的C编译器。确切地说,使用gcc编译x86、arm和sparc上可重入的代码一点问题都没有。