位置编译区的需求是什么

时间:2017-09-04 09:47:59

标签: c gcc

最近我检查了Legacy项目(10年前开发)。

我遇到了#pragma DATA_SECTION。几乎每个全局变量都被添加 特定数据部分。 不知道为什么全局变量专门移到DATA_SECTION?

在我们开发C应用程序的最近几天,我们并不担心数据部分和所有部分。

那么在过去使用位置编译指示并且未使用的原因是什么 时下?

1 个答案:

答案 0 :(得分:3)

当编译器执行超出C标准范围的操作时,将使用

#pragma。如果代码是使用另一个无法识别#pragma的编译器编译的,那么该行将被忽略。

当需要在特定内存部分(例如特定地址)上分配变量时,

#pragma DATA_SECTION NAME#pragma DATA_SECTION DEFAULT一起用于某些嵌入式系统编译器。此示例中的NAME是内存段的自定义名称。

(它与您在其他编译器上可能找到的__declspec(section "NAME")类似。)

我怀疑这是来自Freescale / NXP Codewarrior,其中#pragma DATA_SECTION NAME表示:将所有静态存储持续时间读/写变量放在NAME部分中。

您这样做的原因取决于应用程序。在嵌入式系统中,您需要在某些地址放置变量是很常见的。