__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)

__attribute__前后都有两个下划线,并且后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数

1. 变量别名:

语法:type newname __attribute__((alias("oldname")));

#include <stdio.h>
int oldname = 1;
extern int newname __attribute__((alias("oldname"))); // declaration
void foo(void)
{printf("newname = %d\n", newname); // prints 1
}

2. 弱符号:

若两个或两个以上全局符号(函数或变量名)名字一样,而其中之一声明为weak属性,则这些全局符号不会引发重定义错误。链接器会忽略弱符号,去使用普通的全局符号来解析所有对这些符号的引用,但当普通的全局符号不可用时,链接器会使用弱符号。当有函数或变量名可能被用户覆盖时,该函数或变量名可以声明为一个弱符号。

//模块A中调用func,但是不确定外部是否提供了该函数
...
extern int func(void);...int a = func();...如果直接这么调用,如果外部不提供该函数程序可能出现crash。所以在本模块中__attribute__((weak))就派上了用场int  __attribute__((weak))  func(......){return 0;}

转载于:https://www.cnblogs.com/guxuanqing/p/11184758.html

GNU C之__attribute__相关推荐

  1. GNU C - Using GNU GCC __attribute__ mechanism 01 Function Attribute

    近来阅读glibc源码的时候遇到很多关于__attribute__的问题,索性就查找了相关的资料,学习了一下. 要是不解决了这个问题,有的时候还真的是比较难下手.就拿glibc来说,使用xcscope ...

  2. __attribute__ 用法

    转自:http://www.cnblogs.com/astwish/p/3460618.html GNU C 的一大特色就是__attribute__ 机制.__attribute__ 可以设置函数属 ...

  3. freeRtos学习笔记 (9) 移植和CPU利用率统计

    freeRtos学习笔记 (9) 移植和CPU利用率统计 使用官方固件移植 首先准备一个能跑的裸机工程 注意,freertos需要使用systick定时器,而stm32HAL库默认使用systick作 ...

  4. stm32延时us寄存器_STM32延时函数的四种方法

    关注.星标公众号,不错过精彩内容 单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us()和毫秒级delay_ms().本文基于STM32F207介绍4种不同方式实现的延时函数. ...

  5. c++11 string u8_深入理解C++11:C++11新

    一.数据对齐 在了解为什么数据需要对齐之前,我们可以回顾一下打印结构体的大小这个C/C++中的经典案例.先看代码: #include using namespace std; struct HowMa ...

  6. iar stm32_STM32延时函数的四种方法

    关注.星标公众号,不错过精彩内容 单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us()和毫秒级delay_ms().本文基于STM32F207介绍4种不同方式实现的延时函数. ...

  7. STM32 IIC详解

    目录 1.IIC定义 2.IIC协议规范 2.1 SDA和SCL信号 2.2 数据有效性​ 2.3 开始和结束信号​ 2.4 字节格式 2.5 从机地址和读写位​ 3.计算IIC的频率 4.PCF85 ...

  8. STM32延时函数的四种方法

    目录 1.普通延时 2.定时器中断 3.查询定时器 4.汇编指令 单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us()和毫秒级delay_ms().本文基于STM32F207 ...

  9. [zz]GNU C __attribute__ 机制简介

    GNU C的一大特色(却不被初学者所知)就是__attribute__机制.__attribute__可以设置函数属性(Function Attribute).变量属性(Variable Attrib ...

最新文章

  1. Uncaught SyntaxError: Unexpected token
  2. 查询当前Oracle数据库的实例
  3. bitmap格式分析
  4. DropDownList实现可输入可选择
  5. Java多线程--synchronized修饰普通方法和修饰静态方法的区别
  6. phpstorm9 增加对.vue的支持
  7. VS中标志寄存器表示
  8. php通过实现excel导入,php实现excel导入数据
  9. 【转】hive简介安装 配置常见问题和例子
  10. MP288MP280清零软件
  11. 【翻译】steam离线时通过局域网游玩L4D2(求生之路2)
  12. 单层感知器与线性神经网络
  13. 两种求矩阵伪逆的方法
  14. 一个让人不得不转的故事-《通宵达旦工资只有3200 博客网架构师艰难浪迹于北京》...
  15. 《成为乔布斯》读后感
  16. tkinter中控件menu的两种组织方法
  17. (读书笔记)蔡康永的说话之道
  18. 12个免费logo生成器
  19. 【ML】什么是数据标准化和归一化?应用场景是什么?
  20. HTML 笔记/案例

热门文章

  1. 团队作业8----第二次项目冲刺(Beta阶段) 第六天
  2. LeetCode 121 Best Time to Buy and Sell Stock
  3. 201521123117 《Java程序设计》第1周学习总结
  4. css动画 animation
  5. 网站基于文本搜索的实现
  6. 利用存储过程来实现分页性能比较
  7. WebService在开发中的实际问题
  8. Database Connection String
  9. c#_TcpListenerTcpClient
  10. 删除index.php,从URL中删除index.php - Codeigniter 2