códigos desconhecidos em iw [closed]

-1

Recentemente, estou tentando entender como funcionam os códigos no iw. Em iw.h, encontrei o seguinte:

#define __COMMAND(sect, name, args, nlcmd, flags, idby, handler)    \
static const struct cmd __cmd_ ## handler ## nlcmd ## idby  \
__attribute__((used)) __attribute__((section("__cmd")))     \
= { sect, name, args, nlcmd, flags, idby, handler }
#define COMMAND(section, name, args, cmd, flags, idby, handler) \
__COMMAND(#section, #name, args, cmd, flags, idby, handler)
#define TOPLEVEL(name, args, cmd, flags, idby, handler)     \
__COMMAND(NULL, #name, args, cmd, flags, idby, handler)

extern struct cmd __start___cmd;
extern struct cmd __stop___cmd;

Eu tentei algumas pesquisas no Google, mas só posso entender que "__start

por LaoPiSai 03.06.2014 / 16:08

1 resposta

0

O que é interessante nesta definição macro é o uso de atributos de variáveis :

#define __COMMAND(sect, name, args, nlcmd, flags, idby, handler)    \
static const struct cmd __cmd_ ## handler ## nlcmd ## idby  \
__attribute__((used)) __attribute__((section("__cmd")))     \
= { sect, name, args, nlcmd, flags, idby, handler }

gcc ( ld , rather) gera duas variáveis mágicas: __start_SECTION e __stop_SECTION. Esses podem ser usados para recuperar os endereços inicial e final de uma seção.

Fonte

    
por Sylvain Pineau 03.06.2014 / 16:49

Tags