10

在 C 中有什么用"#pragma section <XYZ>"

我遇到了使用以下类型的 C 代码文件:-

#define XYZ "ITEM 26.G03"

#pragma section <XYZ>

其中 XYZ 是: #define XYZ "ITEM 26.G03"

我需要一些关于使用的解释"#pragma section"

4

2 回答 2

8

#pragma指令是特定于实现的指令,它是向编译器提供附加信息的标准方式。该指令具有以下形式:

#pragma name

如果预处理器识别出指定的“名称”,它将执行它们所代表的任何操作,或将信息传递给编译器。如果 c 实现不支持“名称”,则忽略它

例如gcc 编译器接受此处列出的编译指示列表。

对于, gcc#pragma section的文档说:

section ("section-name") 通常,编译器将它生成的代码放在文本段中。但是,有时您需要额外的部分,或者您需要某些特定功能出现在特殊部分中。section 属性指定函数位于特定的部分中。例如,声明:

      extern void foobar (void) __attribute__ ((section ("bar")));

将函数foobar放在 bar 部分。

某些文件格式不支持任意节,因此节属性并非在所有平台上都可用。如果您需要将模块的全部内容映射到特定部分,请考虑改用链接器的工具。

更多关于这里

于 2012-08-16T06:48:30.620 回答
5

Section 在 .obj 文件中创建一个节。
有关详细信息,请参阅MSDN

代码和数据在目标文件的各个部分中生成,由链接器组合成可执行文件,并最终位于目标内存的特定位置。默认部分是预定义的并具有某些属性。节 pragma可用于更改默认属性、定义新节以及控制将代码和变量分配给特定节以及与链接器命令文件一起控制它们的位置。

#pragma section定义一个节类,并且可以选择在该类中定义一个或两个节。节类控制放置在类实例中的变量和代码的寻址和可访问性。

于 2012-08-16T06:14:56.890 回答