当我尝试将包含内联函数定义的.h文件包含为
时__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SLA (int32_t o1, int32_t o2, int32_t o3)
它正在给出"警告:always_inline函数可能不是无法使用的[-Wattributes]"你能不能帮助我,我正努力解决它。
答案 0 :(得分:25)
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; }
答案 1 :(得分:1)
警告说的是编译器并不总是乐于接受你的函数作为内联,或者它希望它被声明为内联。
我想__attribute__ ((always_inline))
暗示inline
- 在这种情况下,解析属性需要设置DECL_DECLARED_INLINE_P
。
GCC手册指定
always_inline通常,除非指定了优化,否则不会内联函数。对于内联声明的函数,即使未指定优化级别,此属性也会内联函数。
此处为修订版的gcc
test
答案 2 :(得分:1)
这只是因为Makefile中的编译器(arm-none-eabi-gcc)选项
CFLAGS= -D inline
如果设置了此标志,则在尝试包含始终为内联函数的.h文件时,会以__attribute__( ( always_inline ) ) __STATIC_INLINE(inline) uint32_t __SLA (int32_t o1, int32_t o2, int32_t o3)
方式发出警告