当我尝试包含一个由内联函数定义组成的.h文件时,
__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SLA (int32_t o1, int32_t o2, int32_t o3)它给出了"warning: always_inline function it inlinable -Wattributes“,你能帮帮我吗?我正在努力解决这个问题。
发布于 2016-04-18 19:50:19
For functions declared inline(!!!!),这个属性独立于任何其他应用于内联的限制来内联函数。
所以,当你在没有声明内联函数的情况下设置属性时,你会得到这些警告。另外声明内联函数将使这些警告无效。行为gnu gcc/g++ 5.30
# 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; }发布于 2015-09-07 15:56:57
我猜这是因为__attribute__ ((always_inline))暗示了inline -在这种情况下,属性的解析需要设置DECL_DECLARED_INLINE_P。
《GCC手册》规定
always_inline通常,除非指定了优化,否则函数不会内联。对于内联声明的函数,即使没有指定优化级别,此属性也会内联函数。
以下是修订版的gcc test
发布于 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)
https://stackoverflow.com/questions/32432596
复制相似问题