C 中“#pragmasection<XYZ>”有什么用?

问题描述 投票:0回答:2

我遇到过一个 C 文件,其中使用了以下代码:

#define XYZ "ITEM 26.G03"

#pragma section <XYZ>

#pragma section
有什么用?

c pragma
2个回答
9
投票

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

#pragma name

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

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

对于

#pragma section

gcc的文档说:

section ("section-name") 通常,编译器将代码放置在它 生成在文本部分。然而,有时您需要额外的 部分,或者您需要某些特定功能出现在 特别部分。节属性指定一个函数 生活在特定的部分。例如声明:

extern void foobar (void) __attribute__ ((section ("bar")));
  
  
将函数

foobar

 放入条形部分。

某些文件格式不支持任意部分,因此该部分 属性并非在所有平台上都可用。如果您需要绘制地图 模块的全部内容到特定部分,请考虑使用 而是链接器的设施。

更多信息

这里


5
投票
Section 在 .obj 文件中创建一个节。

请参阅
MSDN 了解更多详细信息。

代码和数据在目标文件中分段生成,由链接器组合成可执行文件,并最终位于目标内存的特定位置。默认部分是预定义的并具有某些属性。

section pragmas 可用于更改默认属性、定义新节、控制代码和变量到特定节的分配以及链接器命令文件及其位置。

#pragma section

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

© www.soinside.com 2019 - 2024. All rights reserved.