首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >警告: always_inline函数可能无法内联[-Wattributes]

警告: always_inline函数可能无法内联[-Wattributes]
EN

Stack Overflow用户
提问于 2015-09-07 14:45:10
回答 3查看 14.4K关注 0票数 16

当我尝试包含一个由内联函数定义组成的.h文件时,

代码语言:javascript
运行
复制
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SLA (int32_t o1, int32_t o2, int32_t o3)

它给出了"warning: always_inline function it inlinable -Wattributes“,你能帮帮我吗?我正在努力解决这个问题。

EN

回答 3

Stack Overflow用户

发布于 2016-04-18 19:50:19

For functions declared inline(!!!!),这个属性独立于任何其他应用于内联的限制来内联函数。

所以,当你在没有声明内联函数的情况下设置属性时,你会得到这些警告。另外声明内联函数将使这些警告无效。行为gnu gcc/g++ 5.30

代码语言:javascript
运行
复制
# define FORCE_INLINE __attribute__((always_inline)) inline

FORCE_INLINE vec3 operator- (vec3 a, vec3 b) { vec3 t = { a.x-b.x, a.y-b.y, a.z-b.z }; return t; }
票数 46
EN

Stack Overflow用户

发布于 2015-09-07 15:56:57

我猜这是因为__attribute__ ((always_inline))暗示了inline -在这种情况下,属性的解析需要设置DECL_DECLARED_INLINE_P

《GCC手册》规定

always_inline通常,除非指定了优化,否则函数不会内联。对于内联声明的函数,即使没有指定优化级别,此属性也会内联函数。

以下是修订版的gcc test

票数 2
EN

Stack Overflow用户

发布于 2015-09-08 12:24:21

经过两天的努力,终于找到了解决方案,如下所示

这只是因为Makefile CFLAGS= -D inline中的编译器(arm-none-eabi-gcc)选项。如果设置了此标志,则在尝试包含始终包含内联函数的.h文件时,会抛出警告为__attribute__( ( always_inline ) ) __STATIC_INLINE(inline) uint32_t __SLA (int32_t o1, int32_t o2, int32_t o3)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32432596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档