最近我检查了遗留项目(在10年前开发)。什么是位置编译需要
我碰到了#pragma DATA_SECTION
。几乎每个全局变量都会添加 到特定的数据部分。 不知道为什么全局变量专门移动到DATA_SECTION?
在最近几天,当我们开发一个C应用程序时,我们并不担心数据段和所有。
那么现在使用位置编译指示的原因是什么,现在不使用 ?
最近我检查了遗留项目(在10年前开发)。什么是位置编译需要
我碰到了#pragma DATA_SECTION
。几乎每个全局变量都会添加 到特定的数据部分。 不知道为什么全局变量专门移动到DATA_SECTION?
在最近几天,当我们开发一个C应用程序时,我们并不担心数据段和所有。
那么现在使用位置编译指示的原因是什么,现在不使用 ?
#pragma
用于编译器做超出C标准范围的事情。如果代码是用另一个不能识别#pragma
的编译器编译的,则该行将被忽略。
#pragma DATA_SECTION NAME
与#pragma DATA_SECTION DEFAULT
一起用于某些嵌入式系统编译器,当您需要在特定存储器部分(如特定地址)中分配变量时。本示例中的NAME
是内存段的自定义名称。
(它类似于__declspec(section "NAME")
,你会发现在其他的编译器。)
我怀疑这是飞思卡尔/ NXP的CodeWarrior,其中#pragma DATA_SECTION NAME
的意思是:把所有静态存储时间读/写变量部分NAME
从这里开始。
你会这样做的原因取决于应用程序。在嵌入式系统中,您需要将变量放置在特定地址是非常常见的。
是的。 Iam在嵌入式应用程序中看到它。需要知道为什么变量放置在数据部分 –
@ Balaganesh.V我们不是千里眼。阅读文档并询问作者。这都是来自这里的猜测。 – Olaf
@ Balaganesh.V如果你不明白为什么,你不需要它。当你第一次需要它时 - 你会明白为什么 –
这很大程度上取决于您正在编译的平台。这种编译指示有时甚至在今天仍然是嵌入式代码所必需的。 – user694733
告诉我们更多关于此代码用于的平台。 –
是的。它是一个具有统一内存模型的嵌入式平台(TMS320 DSP)。我可以知道为什么它只需要嵌入式平台... –