"agaelema ." <agae...@gmail.com>: Dec 27 11:45PM -0200
Boa noite pessoal, espero que todos tenham passado um ótimo natal.
Gostaria de uma ajuda com uma dúvida. A algum tempo li sobre o *pre-processor
##* para C/C++ e achei bastante interessante para tentar automatizar alguns
processos.
Para teste tentei aplicar o conceito em uma biblioteca de LCD que adaptei a
bastante tempo para o MSP430. Nessa biblioteca a porta utilizada e os pinos
já estavam definidos dentro das funções, o que limita um pouco o uso ou
torna pouco prático adaptar para um projeto diferente (tendo que mudar
todas as linhas manipulando uma porta).
Então pensei em utilizar o ## para permitir uma configuração prévia, mas
flexível da porta e do pino.
Por exemplo, posso criar a seguinte macro para setar um pino:
#define SET_PIN(port, pin) P ## port ## OUT |= BIT ## pin
Ao chamar essa macro: "SET_PIN(1,0)" será expandida para "P1OUT |= BIT0".
Até aqui funciona perfeito, mas para tornar mais flexível preciso que os
valores de entrada (não sei se posso chamar de argumentos) possam ser
predefinidos, e aí que tive problemas.
Pensei em fazer assim:
#define x_port 1
#define x_pin 0
E então chamar a macro "SET_PIN(x_port, x_pin)", mas diferente do que eu
esperava a expansão não "pega" o valor relacionado ao define, mas sim a
escrita explícita, resultando em "Px_port |= BITx_pin".
Existe alguma maneira da macro reconhecer o valor relacionado ao define, ou
algum outro método para tornar essa configuração transparente ao usuário
(sem ter que ir de linha em linha modificando todas as chamadas).
Grato.
*Haroldo L. M. Amaral*
Laboratório de Sistemas de Potência e Técnicas Inteligentes - LSISPOTI
Doutorando em Eng. Elétrica - Poli USP - SP
Mestre em Eng. Elétrica - UNESP Bauru
Tecnólogo em Sistemas Biomédicos - FATEC Bauru
Técnico em Eletrônica - CTI/UNESP Bauru
Skype: academic_haroldo_amaral
agae...@gmail.com
*Lattes <http://lattes.cnpq.br/3986982115883346> || Linkedin
<https://br.linkedin.com/in/haroldoamaral> || Embarcados
<http://www.embarcados.com.br/author/agaelema/> || Github
<https://github.com/agaelema>*
Você recebeu esse resumo porque está inscrito para receber atualizações deste grupo. Você pode alterar suas configurações na página de associação do grupo.
Para cancelar sua inscrição neste grupo e deixar de receber e-mails do mesmo, envie um e-mail para texas-sc+unsubscribe@googlegroups.com.
Haroldo L. M. Amaral
Laboratório de Sistemas
de Potência e Técnicas Inteligentes - LSISPOTI
Doutorando em Eng. Elétrica - Poli USP - SP
Mestre em Eng. Elétrica - UNESP Bauru
Tecnólogo em Sistemas Biomédicos - FATEC Bauru
Técnico em Eletrônica - CTI/UNESP Bauru
Skype: academic_haroldo_amaral
Lattes || Linkedin || Embarcados || Github