Guía GNU C `__atributo__`

Patrones y ejemplos de uso comunes de GNU C `__attribute__`.

Sintaxis

1
__attribute__((attribute-list))

attribute-list es una lista de atributos separados por comas.

Atributos comunes

empaquetado

Elimina el relleno de la estructura predeterminada y minimiza los espacios de alineación.

1
2
3
4
struct __attribute__((packed)) packed_str {
    uint8_t x;
    uint16_t y;
};

Úselo con cuidado: el acceso no alineado puede reducir el rendimiento o causar fallas en algunas arquitecturas.

alineado(n)

Fuerza la alineación del objeto a n bytes.

1
int buf[16] __attribute__((aligned(64)));

sección("nombre")

Coloca la variable/función en una sección del vinculador personalizado.

1
const char fw_ver[] __attribute__((section(".fwinfo"))) = "1.0.0";

sin usar

Suprime las advertencias no utilizadas.

1
static void helper(void) __attribute__((unused));

débil

Declara un símbolo débil (puede anularse mediante una definición fuerte).

1
void board_init(void) __attribute__((weak));

sin retorno

Función de marcas que nunca regresa.

1
void fatal_error(void) __attribute__((noreturn));

Notas

  • __attribute__ es específico del compilador (compatible con GCC/Clang en muchos casos).
  • Prefiere macros para mayor portabilidad cuando apunta a múltiples compiladores.
记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy