advertencia: la función always_inline podría no ser inlinable

cuando bash incluir un archivo .h que consiste en una definición para funciones en línea como

__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SLA (int32_t o1, int32_t o2, int32_t o3) 

está dando la “advertencia: la función siempre_inline no puede ser inlinable [-Atributos]”. ¿Puede alguien ayudarme? Estoy luchando para solucionarlo.

Para las funciones declaradas en línea (!!!!) , este atributo alinea la función independientemente de cualquier restricción que de otra manera se aplique a la alineación.

Por lo tanto, cuando establezca el atributo sin declarar la función en línea, recibirá estas advertencias. Declare la función adicionalmente en línea anulará estas advertencias. Comportamiento gnu gcc / g ++ 5.30

 # define FORCE_INLINE __attribute__((always_inline)) inline FORCE_INLINE vec3 operator- (vec3 a, vec3 b) { vec3 t = { ax-bx, ay-by, az-bz }; return t; } 

Lo que dice esta advertencia es que el comstackdor, no siempre está contento de aceptar su función como en línea, o quiere que se declare como en línea.

Supongo que __attribute__ ((always_inline)) implica inline , en cuyo caso el análisis del atributo debe establecer DECL_DECLARED_INLINE_P .

El manual de GCC especifica

always_inline En general, las funciones no están en línea a menos que se especifique la optimización. Para las funciones declaradas en línea, este atributo alinea la función incluso si no se especifica ningún nivel de optimización.

Aquí está la prueba de gcc para la revisión

Finalmente, después de pasar dos días, los esfuerzos encontraron la solución ya que está por debajo

es solo debido a una opción de comstackdor (arm-none-eabi-gcc) en Makefile CFLAGS= -D inline si este indicador está activado, __attribute__( ( always_inline ) ) __STATIC_INLINE(inline) uint32_t __SLA (int32_t o1, int32_t o2, int32_t o3) advertencia como __attribute__( ( always_inline ) ) __STATIC_INLINE(inline) uint32_t __SLA (int32_t o1, int32_t o2, int32_t o3) al intentar incluir un archivo .h que consiste en funciones siempre integradas