Macros em C

Programação C em geral

Moderadores: 51, guest2003

Macros em C

Mensagempor Maffeis » 24 Mai 2014 18:06

Senhores

Me deparei com as seguintes linhas de código em uma biblioteca gostaria de saber se alguém sabe me dizer oque elas fazem se são macros msm.

Código: Selecionar todos
#define HID_UsagePage(x)       0x05,x
#define HID_UsagePageVendor(x) 0x06,x,0xFF
#define HID_LogicalMin(x)      0x15,x
#define HID_LogicalMinS(x)     0x16,(x&0xFF),((x>>8)&0xFF)
#define HID_LogicalMinL(x)     0x17,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)
#define HID_LogicalMax(x)      0x25,x
#define HID_LogicalMaxS(x)     0x26,(x&0xFF),((x>>8)&0xFF)
#define HID_LogicalMaxL(x)     0x27,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)
#define HID_PhysicalMin(x)     0x35,x
#define HID_PhysicalMinS(x)    0x36,(x&0xFF),((x>>8)&0xFF)
#define HID_PhysicalMinL(x)    0x37,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)
#define HID_PhysicalMax(x)     0x45,x
#define HID_PhysicalMaxS(x)    0x46,(x&0xFF),((x>>8)&0xFF)
#define HID_PhysicalMaxL(x)    0x47,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)
#define HID_UnitExponent(x)    0x55,x
#define HID_Unit(x)            0x65,x
#define HID_UnitS(x)           0x66,(x&0xFF),((x>>8)&0xFF)
#define HID_UnitL(x)           0x67,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)
#define HID_ReportSize(x)      0x75,x
#define HID_ReportID(x)        0x85,x
#define HID_ReportCount(x)     0x95,x
#define HID_Push               0xA0
#define HID_Pop                0xB0


tem esses : e ? também

Código: Selecionar todos
PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp;


Obrigado.
Alexandre Maffeis
Maffeis
Word
 
Mensagens: 501
Registrado em: 07 Ago 2010 19:10

Re: Macros em C

Mensagempor andre_luis » 24 Mai 2014 18:11

Sim, a maioria dos compiladores atuais permitem a utilização de macros parametrizadas.
Já o ?: é apenas uma implementação compacta do if-else, padrão do C.




+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Macros em C

Mensagempor Maffeis » 24 Mai 2014 18:14

André Por exemplo essa

#define HID_UsagePageVendor(x) 0x06,x,0xFF

ele usa ela no código dessa forma

HID_UsagePageVendor(0x00)

qual seria o valor dela?
Maffeis
Word
 
Mensagens: 501
Registrado em: 07 Ago 2010 19:10

Re: Macros em C

Mensagempor andre_luis » 24 Mai 2014 18:19

Então, se na macro tá definida como:

Código: Selecionar todos
#define HID_UsagePageVendor(x) 0x06,x,0xFF


No caso, quando o compilador encontrar isso:

Código: Selecionar todos
HID_UsagePageVendor(0x00)


Vai substituir x por 0x00 no código compilado, resultando nisso:

Código: Selecionar todos
0x06,0x00,0xFF



+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Macros em C

Mensagempor Maffeis » 24 Mai 2014 18:38

Estava achando que ela fazia alguma conta com os valores

ou setava algum range tipo o valor vai de 0x06 até 0xFF

Vou tentando aqui
Maffeis
Word
 
Mensagens: 501
Registrado em: 07 Ago 2010 19:10

Re: Macros em C

Mensagempor cfreund » 24 Mai 2014 19:11

Maffeis escreveu:tem esses : e ? também

Código: Selecionar todos
PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp;



http://pt.wikipedia.org/wiki/Opera%C3%A ... n%C3%A1ria
Cláudio F
Avatar do usuário
cfreund
Word
 
Mensagens: 672
Registrado em: 14 Out 2006 14:02
Localização: São Paulo

Re: Macros em C

Mensagempor Maffeis » 24 Mai 2014 19:32

Estou testando a USB do LPC1768

Comunicando ele com o C# usando HID

Estava dando zica do VID e PID agora eu achei aqui

O C# esta dando como conectado tiro o cabo desconecta coloca denovo conecta

vou tentar acender um led da placa pelo pc agora
Maffeis
Word
 
Mensagens: 501
Registrado em: 07 Ago 2010 19:10


Voltar para Visual C++/C/C++/C#

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x