• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

static 与inline 不能同时使用吗?

sgf201 2018-06-13 浏览量:1818
STM32在KEIL中的代码,有一个函数声明是 static inline int aaaaa(int b); 这个样子,编译的时候总是报inline 没有定义,去掉就正常了?这里是static和inline有冲突吗?代码原来是运行到linux上的,linux下没有这个限制是吗?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 而在keil环境下,需要写成static __inline,在linux下是不用两个下划线的,在keil中是需要两个下划线的。Keil中对于inline声明的关键字与linux不同。这一点在移植代码到不同平台时非常重要。
    • 发布于 2018-06-13
    • 举报
    • 评论 2
    • 2
    • 0
奔跑的黑蚂蚁 回复了 Angel_YY:Static是静态变量,那这个inline是什么意思? 回复
Angel_YY 回复了 Angel_YY:内联函数声明 回复

其他答案 数量:7
  • CodeBlocks环境下static和inline可以同时使用,MDK对inline的处理比较复杂,有时候会报错,如果用的话建议加下划线。

    • 发布于2018-06-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个要看编译器是否支持,比如keil就不能同时使用,但是IAR可以
    • 发布于2018-06-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 在MDK下面,static和inline之间要加两条下划线
    • 发布于2018-06-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以同时使用,linux内核源码中很多这样的代码
    • 发布于2018-06-14
    • 举报
    • 评论 0
    • 0
    • 0

  • MDK 下的 inline前面有两个下划线。可以用系统重定义的__STATIC_INLINE来代替,ARM核心的头文件基本都是__STATIC_INLINE,可以跨IDE使用,IAR,GCC什么的都支持。
    • 发布于2018-06-14
    • 举报
    • 评论 0
    • 0
    • 0

  • MDK环境先是不能同时使用的,需要加下划线,但是在GCC下可以同时使用
    • 发布于2018-06-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 是的,在keil下是不可以的。但是使用gcc编译器是没有问题的。
    • 发布于2018-06-15
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

static 与inline 不能同时使用吗?