Chinaunix首页 | 论坛 | 博客
  • 博客访问: 127759
  • 博文数量: 22
  • 博客积分: 596
  • 博客等级: 二等列兵
  • 技术积分: 874
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-06 12:09
个人简介

Enjoy code,enjoy life!

文章分类
文章存档

2013年(11)

2012年(11)

分类: 嵌入式

2013-04-28 08:10:10

1.__func__
    __func__表示是当前所在的函数名,在编译的时候就已经生成了.

2.#prama arm section[section_sort_list]
    此编译指示指定要用于后续函数或对象的节名称.这包括编译器为进行初始化而创建的匿名对象的定义.
Note
    可以将__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链接器配合使用,以控制将已命名的节放在特定内存地址的方式.
限制
    此选项对以下内容无效:
    (1)内联函数及其局部静态变量。
    (2)模板实例化及其局部静态变量。
    (3)删除未使用的变量和函数。但是,可通过使用 #pragma arm section,使链接器能够删除本来可能会保留的函数或变量,因为它与使用的
        或变量位于相同的节中。
    (4)将定义写入对象文件的顺序。
示例
    

点击(此处)折叠或打开

  1. #pragma arm section code = "name_1"
  2. void name_2(void)
  3. {
  4.   ...
  5. }
  6. #pragma arm section code
    这段话的意思是,name_2()的code放在"name_1"语句段内,"name_1"是分散加载描述文件指定放在哪个ROM内,比如内部RAM,外部RAM等等.以加快对速度敏感运行的程序.

3.__attribute__((section("name")))
    可以使用section函数属性将代码放在映象的不同节中.
Note
    此函数属性石ARM编译器支持的GNU编译器扩展.
示例
    

点击(此处)折叠或打开

  1. void Function_Attributes_section_0 (void)
  2.     __attribute__((section ("new_section")));
  3. void Function_Attributes_section_0 (void)
  4. {
  5.     static int aStatic = 0;
  6.     aStatic++;
  7. }
    在这个示例中,将Function_Attributes_section_0放在RO节new_section中,而不是放在.text中.

4.void *param参数
    往往我们在有些函数,例如:int fun(void *param)中,没有使用过param参数,那这函数究竟有什么用呢?
函数中预留的参数有时候是需要的,可以用作扩展使用,有时在回调函数中一般会有一个void *类型的参数.需要在实现的时候转换成自己需要的类型.使用fun()函数时,括号内必须要填参数,不填就会出错.


阅读(2978) | 评论(0) | 转发(0) |
0

上一篇:C#捷径编程笔记9

下一篇:void *

给主人留下些什么吧!~~