Moderadores: andre_luis, 51, guest2003, Renie
HC908 escreveu:Opa Dr. renie. Tudo bom, ja tentei de tudo. o maximo q consegui foi .
DeclareTask(CMD_RCV_SERIAL);
ele cria uma função chamada void CMD_RCV_SERIAL(void);
O compilador q estou usando é o C18 da microchip;
Marcelo Samsoniuk escreveu:nao dah para usar as macros do pre-processador?
#define DeclareTask(LABEL) LABEL(void) { char status_LABEL=0; }
inclusive vc pode gerar uma saida definitiva rodando o pre-processador a parte (cpp), praticamente um auto-codigo...aposto que a microsoft nao tem um botao auto-codigo no word hahaha
vc pode ateh tentar fazer um pseudo-c++ com macros hehehe
Djalma Toledo Rodrigues escreveu:CMD_RCV_SERIAL
void CMD_RCV_SERIAL(void)
Status_CMD_RCV_SERIAL=0;
Ctrl C, Ctrl V
HC908 escreveu:Opa Marcelo,
Este exemplo acredito q declarar uma variavel sem ser global não é?
é +- isso q eu quero, so queria q a varaivel vc declarada global.
+ mt obrigado pela força.Marcelo Samsoniuk escreveu:nao dah para usar as macros do pre-processador?
#define DeclareTask(LABEL) LABEL(void) { char status_LABEL=0; }
inclusive vc pode gerar uma saida definitiva rodando o pre-processador a parte (cpp), praticamente um auto-codigo...aposto que a microsoft nao tem um botao auto-codigo no word hahaha
vc pode ateh tentar fazer um pseudo-c++ com macros hehehe
Marcelo Samsoniuk escreveu:sem problemas:
#define DeclareTask(LABEL) char status_/**/LABEL ; \
LABEL(void) { status_LABEL=0; }
ele vai declarar a variavel como global, fora da funcao. o /**/ ou ## acho que eh necessario para concatenar as coisas nas macros, nao lembro, eu nunca uso macros.
por outro lado, para gerar corretamente segmentos de codigo assim, eu faria uma lista dos labels q eu quero e rodaria um programa em awk gerando os .h e .c automaticamente.HC908 escreveu:Opa Marcelo,
Este exemplo acredito q declarar uma variavel sem ser global não é?
é +- isso q eu quero, so queria q a varaivel vc declarada global.
+ mt obrigado pela força.Marcelo Samsoniuk escreveu:nao dah para usar as macros do pre-processador?
#define DeclareTask(LABEL) LABEL(void) { char status_LABEL=0; }
inclusive vc pode gerar uma saida definitiva rodando o pre-processador a parte (cpp), praticamente um auto-codigo...aposto que a microsoft nao tem um botao auto-codigo no word hahaha
vc pode ateh tentar fazer um pseudo-c++ com macros hehehe
#define DeclareTask(LABEL) char status_##LABEL ; \
LABEL(void) { status_##LABEL=1; }
DeclareTask(Task0);
DeclareTask(Task1);
int main()
{
printf("status of task is %d\n",Task0());
printf("status of task is %d\n",Task1());
return 0;
}
# 1 "zuado.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "zuado.c"
char status_Task0 ; Task0(void) { return status_Task0=1; };
char status_Task1 ; Task1(void) { return status_Task1=1; };
int main()
{
printf("status of task is %d\n",Task0());
printf("status of task is %d\n",Task1());
return 0;
}
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante