预处理pragma
来源:互联网 发布:高德 js api 定位 编辑:程序博客网 时间:2024/05/02 01:20
#pragma arm section说明
4.6.3 #pragma arm section [section_sort_list]此编译指示指定要用于后续函数或对象的节名称。这包括编译器为进行初始化而创建的匿名对象的定义。注意可以将 __attribute__((section(..))) 用于函数或变量以替代 #pragma arm section。
【语法】
#pragma arm section [ section_sort_list]
其中:
section_sort_list 指定要用于后续函数或对象的节名称的可选列表。
section_sort_list 的语法为:section_type[[=]"name"] [,section_type="name"]*
有效的节类型是:• code 、• rodata、• rwdata、• zidata 。
【用法】
可以将分散加载描述文件与 ARM 链接器配合使用,以控制将已命名的节放在特定内存地址的方式。
【限制】
此选项对以下内容无效:
• 内联函数及其局部静态变量。
• 模板实例化及其局部静态变量。
• 删除未使用的变量和函数。但是,可通过使用 #pragma arm section,使链接
器能够删除本来可能会保留的函数或变量,因为它与使用的函数或变量位
于相同的节中。
• 将定义写入对象文件的顺序。
【示例】
int x1 = 5; // in .data (default)
int y1[100]; // in .bss (default)
int const z1[3] = {1,2,3}; // in .constdata (default)
#pragma arm section rwdata = "foo", rodata = "bar"
int x2 = 5; // in foo (data part of region)
int y2[100]; // in .bss
int const z2[3] = {1,2,3}; // in bar
char *s2 = "abc"; // s2 in foo, "abc" in .conststring
#pragma arm section rodata
int x3 = 5; // in foo
int y3[100]; // in .bss
int const z3[3] = {1,2,3}; // in .constdata
char *s3 = "abc"; // s3 in foo, "abc" in .conststring
#pragma arm section code = "foo"
int add1(int x) // in foo (code part of region)
{
return x+1;
}
#pragma arm section code
其实就是增加额外的name段,将这个段放在code、rodata、rwdata或zidata的起始位置,至于具体是哪个段,就是由section_type[[=]"name"]中的section_type指定了。
#pragma arm section说明
此编译指示指定要用于后续函数或对象的节名称。这包括编译器为进行初始化而创建的匿名对象的定义。注意可以将 __attribute__((section(..))) 用于函数或变量以替代 #pragma arm section。
【语法】
#pragma arm section [ section_sort_list]
其中:
section_sort_list 指定要用于后续函数或对象的节名称的可选列表。
section_sort_list 的语法为:section_type[[=]"name"] [,section_type="name"]*
有效的节类型是:• code 、• rodata、• rwdata、• zidata 。
【用法】
可以将分散加载描述文件与 ARM 链接器配合使用,以控制将已命名的节放在特定内存地址的方式。
【限制】
此选项对以下内容无效:
• 内联函数及其局部静态变量。
• 模板实例化及其局部静态变量。
• 删除未使用的变量和函数。但是,可通过使用 #pragma arm section,使链接
器能够删除本来可能会保留的函数或变量,因为它与使用的函数或变量位
于相同的节中。
• 将定义写入对象文件的顺序。
【示例】
int x1 = 5; // in .data (default)
int y1[100]; // in .bss (default)
int const z1[3] = {1,2,3}; // in .constdata (default)
#pragma arm section rwdata = "foo", rodata = "bar"
int x2 = 5; // in foo (data part of region)
int y2[100]; // in .bss
int const z2[3] = {1,2,3}; // in bar
char *s2 = "abc"; // s2 in foo, "abc" in .conststring
#pragma arm section rodata
int x3 = 5; // in foo
int y3[100]; // in .bss
int const z3[3] = {1,2,3}; // in .constdata
char *s3 = "abc"; // s3 in foo, "abc" in .conststring
#pragma arm section code = "foo"
int add1(int x) // in foo (code part of region)
{
return x+1;
}
#pragma arm section code
其实就是增加额外的name段,将这个段放在code、rodata、rwdata或zidata的起始位置,至于具体是哪个段,就是由section_type[[=]"name"]中的section_type指定了。
1.message 参数
2.code_seg
3.#pragma once
- #pragma 预处理
- 预处理pragma
- #pragma 预处理指令详解
- #pragma 预处理指令详解
- #pragma 预处理指令详解
- #pragma 预处理指令详解
- #pragma 预处理指令详解
- #pragma 预处理指令详解
- #pragma预处理指令详解
- #pragma预处理指令详解
- #pragma 预处理指令详解- -
- #pragma 预处理指令详解
- #pragma 预处理指令解析
- #pragma 预处理指令详解
- #pragma 预处理指令详解
- #pragma 预处理指令详解
- #pragma 预处理指令详解
- #pragma 预处理指令详解
- utf-8下mount挂载windows共享-中文乱码解决方法
- 三星称其对Mozilla火狐操作系统不感兴趣
- 参观 Google 莫斯科办公室(多图慎入)
- 与一个印度外包 Java 技术负责人的对话
- 关于 HTML5 令人激动的 10 项预测
- 预处理pragma
- 算法-排序-冒泡
- Intellij IDEA JRebel 热部署
- 开源社区自己从来不想承认的九大事实
- X86架构中断的处理
- IIS 7.0与ASP.NET
- 解读华尔街人为什么讨厌开源软件
- java规范
- php 正则匹配中文