{getToc} $title={Índice}
Oque são atributos de variáveis?
Essa declaração se da por meio da palavra-chave “__attribute__” onde é possível especificar a uma variável um atributo especial, como exemplificado abaixo:
__attribute__ ((ATRIBUTE));
Onde :
- ATRIBUTE : tipo de atributo da variável.
Alguns atributos são definidos genericamente para variáveis, ficando transparente para o desenvolvedor, porem, é importante em determinados casos saber modificar esses atributos.
Tipos de atributos de variáveis
Exitem diversos tipos de atributos, comum a todas as arquiteturas e especifico a cada uma delas, nos exemplos vamos abordar apenas alguns atributos de variáveis comuns, e utilizaremos o compilador online do site programiz. Para conferir todos os exemplos consulte a guia Referências.__attribute__ ((alias))
Esse atributo permite dar um "apelidos" para uma variável, onde essa será correspondida através do nome do alias alvo, como exemplificado abaixo:
__attribute__ ((aligned ))
Especifica o tamanho(alinhamento) minimo em bytes, para uma variável ou estrutura. Para variáveis que não estão presentes em estruturas, é preservado o seu alinhamento natural do seu tipo, já para estruturas o alinhamento modifica o tamanho. Esse atributo é normalmente utilizado junto ao packed.
Abaixo um exemplo de uso disponibilizado no site developer.arm
__attribute__ ((cleanup))
O atributo cleanup executa uma função quando a variável é desalocada/sai de contexto. Esse atributo não pode ser utilizado em variáveis recebidas como parâmetros ou variáveis estáticas(não vão ser desalocadas)
__attribute__ ((deprecated))
Muito utilizados em drivers o atributo deprecated gera um aviso na compilação, que indica que a variável será removida em uma versão futura.
__attribute__ ((packed))
O atributo especifica que um campo de variável ou estrutura tem o menor alinhamento possível. Ou seja, um byte para uma variável e um bit para um campo, a menos que você especifique um valor maior com o aligned.Outros
Abaixo uma lista de alguns atributos em comum para todas as arquiteturas:
- __attribute__ ((warn_if_not_aligned))
- __attribute__ ((alloc_size))
- __attribute__ ((common))
- __attribute__ ((copy))
- __attribute__ ((unavailable))
- __attribute__ ((mode))
- __attribute__ ((nonstring))
- __attribute__ ((weak))
- __attribute__ ((section))
- __attribute__ ((tls_model))
- __attribute__ ((unused))
- __attribute__ ((retain))
- ...
Quais são as vantagens de utilizar atributos de variáveis?
Algumas das vantagens são:- Capacidade de controlar totalmente suas variáveis em nível de memoria.
- Prevenir erros de desenvolvimento (bugs).
- Melhor eficiência para o compilador.
Conclusão
O presente artigo tem como objetivo fazer um breve resumo sobre atributos de variáveis, e estimular ao leitor que pesquise mais sobre o assunto.
Em aplicações esses atributos não são normalmente vistos, porem são uma ferramenta a mais que deve ser estudada pelo desenvolvedor.
Recomenda-se analisar os links disponibilizados na guia Referências.
Cara, achei muito legal o clean up pra uma coisa muito específica: já declarar o ponteiro que vai receber um futuro malloc sem ter que preocupar com posicionar o free depois. Muito boa a iniciativa do blog, parabéns!
ResponderExcluirSim Natanael, é bem util, curti bastante utilizar em alguns casos.
ExcluirMuito bom, bem util os atributos.
ResponderExcluirQue bom que curtiu :)
Excluir