Página 1 de 1

duvida2

MensagemEnviado: 11 Jan 2007 08:51
por rebelk
ultilizo uma biblioteca.h e nela existem varias funções e que algumas delas não chamo no progama principal , então aparece

linking...*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?CALCULO_TENCAO?FONTE
Program Size: data=26.7 xdata=0 code=707
creating hex file from "FONTE"..."FONTE" - 0 Error(s), 1 Warning(s).


o que segnifica isso , isso é um erro ?
como faço para resolver isso?

ultilizo o keil

MensagemEnviado: 11 Jan 2007 09:49
por brasilma
Não é erro não, apenas um aviso, vc pode perceber isso pois o compilador e o linker fizeram seu trabalho até o final, se fosse erro o objeto não seria gerado.

Ele está apenas o advertindo que um segmento dentro do seu programa não está sendo chamado, isto é útil, pois retirando-o (/* */), vc economisa memória.

Então não o encare como sendo uma coisa "chata" e sim boa.

Abraços,
MArcos.

MensagemEnviado: 11 Jan 2007 12:51
por rebelk
beleza brazilma , mas não tem como ele compilar apenas o que é
chamado na função principal?

desde já agradeço !!!!!!!!

MensagemEnviado: 11 Jan 2007 13:34
por barboza
Lembro disso ter sido discutido no forum antigo.
Tem uma diretiva no Keil que faz isso.

MensagemEnviado: 11 Jan 2007 14:51
por rebelk
onde , ou qual ?

MensagemEnviado: 11 Jan 2007 16:44
por Maurício
O problema é que ele compila e inclue a função não-chamada pra dentro do seu programa, o que ocupa espaço na memória.

Não conheço essa diretiva. Seria muito interessante se alguém conhecer outro método, postar aqui.
A solução que a Keil recomenda nos seus manuais é a seguinte:

Isole a função não-chamada através do uso da diretiva #if(0), #endif

No código fica assim:

Código: Selecionar todos
#if (0)
void funcao_nao_chamada ( void)
{

}
#endif


Isso daí já elimina o código desnecessário do seu programa, e evita o mané do compilador de ficar enviando mensagens bestas !!! :lol:

[]'s

RETI.

MensagemEnviado: 11 Jan 2007 17:15
por rebelk
valeu professor!!!!!!!!

tambem gostari de saber !!

MensagemEnviado: 12 Jan 2007 11:20
por rebelk
este se #if(0) seguifica o que!

MensagemEnviado: 12 Jan 2007 12:16
por Viktor
Coloca o comado REMOVEUNUSED dentro OPTIONS FOR TARGET->LX51 MISC->Misc controls

Isto resolve seu problema !

MensagemEnviado: 12 Jan 2007 12:59
por rebelk
só não enterndi como faço isso!

MensagemEnviado: 12 Jan 2007 13:31
por Viktor
PROJECT->OPTIONS FOR "TARGET"->LX51 MISC->Misc controls


TERGET = NOME DO SEU PROJETO

MensagemEnviado: 12 Jan 2007 15:49
por rebelk
fiz tudo que vc mandou e deu isso



Build target 'Target 1'
compiling Acionador.c...
linking...

BL51 BANKED LINKER/LOCATER V5.01 - SN:
K1PTP-FS3H1E
COPYRIGHT KEIL ELEKTRONIK GmbH 1987
- 2002
"Acionador.obj"
TO "teste"
RAMSIZE(256)

REMOVEUNUSED
*** FATAL ERROR L204: INVALID KEYWORD

POS: 58
EIL\C51\BIN\BL51.EXE Acionador.obj TO teste RAMSIZE
(256) REMOVEUNUSED#
Target not created









#include <at898252.h>
//#include <binario.h>
//#include<delay_us.h>
//#include <delay_ms.h>



unsigned int W=0;


tabela(unsigned int A)
{
A=A*3;
}

// ***************************************************************************************************************
// ***************************************************************************************************************
main()
{

TMOD=0X11;



while(1)
{


W++;
tabela( W );



}


}

MensagemEnviado: 12 Jan 2007 16:36
por Viktor
Cara, comigo funciona. De qualquer modo dá uma olhada em http://www.keil.com/support/man/docs/lx ... unused.htm