问题描述
- __builtin_ffs 的作用,就是求一个32位数值中,从低位开始的1出现的位置,这算是一个内置的函数,所以直接使用,计算会比较的快。
- RT-Thread 内核代码中,使用这个 函数,作为快速得出 最高优先级的位置,从而获取当前的最高优先级线程,用于线程的调度切换
- 我验证这个函数的使用,发现使用Keil MDK5.32,编译报错了,找不到这个函数
解决方法
- 通过对比工程,我发现,__builtin_ffs 是 gnu gcc的函数,可能要配置 --gnu选项
- 如果 ARM 编译器版本为5,可以增加:–gnu选项
- 如果ARM 编译器版本为6,不需要 --gnu选项,否则还会提示 --gnu无法识别
- 如果出现:
ArmClang: error: unsupported option '--gnu'; did you mean '-fgnu'?
,需要移除--gnu
的选项
小结
- 需要对IDE的部分配置熟悉,才能高效的解决问题