1
2
一个C编译器即使在为可重入性正确编码函数时也不会生成可重入代码,这将是一个例外,而不是一个规则,并且是由于体系结构约束的原因(例如没有足够的资源来支持堆栈,所以生成静态帧)。在这些情况下,编译器文档应该清楚地说明这一点。
|
2
4
|
3
2
|
4
1
可重入性不是编译器可以控制的,而是由程序员来编写可重入性代码。为此,您需要避免所有明显的陷阱,例如全局变量(包括本地静态变量)、共享资源、线程、对其他不可重入函数的调用等。
尽管如此,一些用于小型嵌入式系统的交叉编译器(例如8051)在默认情况下可能不会生成可重入代码,您可能需要通过
|
5
1
GCC至少在它编译的大多数平台上生成可重入代码(特别是在避免按值传递或返回结构的情况下),但是特定的语言或平台ABI可能会以其他方式指定。你将需要更具体的任何更具决定性的声明作出;我知道,如果正在编译的代码本身基本上是可重入的,那么它在桌面处理器上基本上是可重入的(当然,奇怪的全局状态技巧会在任何平台上给您带来麻烦)。 |
6
0
但是,在主要平台上,编译器生成或包含的代码(如数学内部函数或函数调用)是可重入的。由于GCC不支持常见的不可重入函数调用的平台,例如8051,因此在可重入性方面出现编译器问题的风险很小。 有些GCC端口有bug和问题,比如MSP430版本。 |
Jason Steve · 实时gps reall需要数据库? 6 年前 |
Naveen Attri · Android实时位置共享 6 年前 |
Amin Ullah · EmguCv实时视频解码中的600毫秒延迟 6 年前 |
Laveena · 连续无限实时流式音频信号,Python 6 年前 |
Malerosa · 如何将数据库链接到我的Android应用程序? 6 年前 |