OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2657|回复: 3

关于静态内联函数的使用

[复制链接]

1

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2016-7-22
在线时间
5 小时
发表于 2017-7-29 18:38:05 | 显示全部楼层 |阅读模式
1金钱
想问下大家一个问题,在头文件的静态内联函数可以被外部调用吗?比如core_cmFunc.h文件中的
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_BASEPRI(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, basepri" : "=r" (result) );
  return(result);
}

__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI_MAX(uint32_t value)
{
  __ASM volatile ("MSR basepri_max, %0" : : "r" (value) : "memory");
}


函数是static inline,静态函数不是说只在本文件中有效吗?那外部怎么调用的呢?谢谢大家~

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2016-7-22
在线时间
5 小时
 楼主| 发表于 2017-7-29 18:48:30 | 显示全部楼层
__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI_MAX(uint32_t value)
{
  __ASM volatile ("MSR basepri_max, %0" : : "r" (value) : "memory");
}





__STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri)
{
  register uint32_t __regBasePriMax      __ASM("basepri_max");
  __regBasePriMax = (basePri & 0xff);
}

这两个函数有何区别呢?在调用的时候如何区分是哪个?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165462
金钱
165462
注册时间
2010-12-1
在线时间
2114 小时
发表于 2017-7-29 22:26:09 | 显示全部楼层
别申明成这样不就完事了么
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2016-7-22
在线时间
5 小时
 楼主| 发表于 2017-7-31 10:36:16 | 显示全部楼层
正点原子 发表于 2017-7-29 22:26
别申明成这样不就完事了么

看的是一个国外的开源项目,老外写的东西。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-19 22:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表