Warning no Keil "ponteiro"

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

Warning no Keil "ponteiro"

Mensagempor styg » 12 Jan 2007 09:53

no keil para arm...

to fazendo isso:

char portugues[TELAS][CARACT] = {"Ola ","tchau "};
char english [TELAS][CARACT] = {"Hello ","goodbye "};
char *idioma;

idioma = portugues; (1)

TES.C(62): warning C91: '=': pointer to different objects
TES.C(62): warning C91: '&': pointer to different objects

os avisos são referentes à linha (1), o keil compila na boa, gravei e funfou como queria, mudo o idioma fazendo o ponteiro apontar para a matriz desejada.

mas soh por curiosidade, pois nao descobri o pq desse aviso...


falow ;)
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor gibim » 12 Jan 2007 10:16

No Keil a explicação é esta:

Summary *** Warning C91
operator: Pointer to Different Objects

Description The operands of the specified operator are pointers to different objects. For example: pi = pl where pi is int * and pl is long * will give warning 91.

Eu compilei oque você fez e funcionou também. Não deu nenhum erro.

#define TELAS 10
#define CARACT 10
char portugues[TELAS][CARACT] = {"Ola ","tchau "};
char english [TELAS][CARACT] = {"Hello ","goodbye "};
char *idioma;

int main(int argc, char *argv[])
{
idioma = *portugues;
idioma = *english;

idioma = (char*)&portugues;
idioma = (char*)&english;

while(1);

return(0);
}
Editado pela última vez por gibim em 12 Jan 2007 10:34, em um total de 1 vez.
Avatar do usuário
gibim
Byte
 
Mensagens: 117
Registrado em: 08 Nov 2006 21:40
Localização: Londrina - PR

Re: Warning no Keil "ponteiro"

Mensagempor Viktor » 12 Jan 2007 10:21

char *idioma = ponteiro para uma string
char portugues[][] = ponteiro para uma tabela de strings

Conclusão : Ponteiros para objetos diferentes
Viktor
Byte
 
Mensagens: 281
Registrado em: 12 Out 2006 11:33

Re: Warning no Keil "ponteiro"

Mensagempor ivan » 12 Jan 2007 20:47

Viktor escreveu:char *idioma = ponteiro para uma string
char portugues[][] = ponteiro para uma tabela de strings

Conclusão : Ponteiros para objetos diferentes


Pegando carona...

idioma = (char*) portugues[0];

deve resolver o prob.
E warning não dá êrro, é aviso de que uma correção deve ser feita...
"A mente que se abre a uma nova idéia jamais volta ao seu tamanho original." (Albert Einstein).
Avatar do usuário
ivan
Word
 
Mensagens: 618
Registrado em: 12 Out 2006 21:27

Mensagempor styg » 15 Jan 2007 07:15

bom como vcs falaram ai..

troquei

idioma = portugues;

por

idioma = portugues[0];

isso bastou pra resolver o problema, sumiram os avisos.

quanto a esse:

idioma = (char*) portugues[0];

esse char entre parenteses é soh especificando o tipo de variavel msm? e o asterisco por ser ponteiro?


valeu ivan, viktor e gibim :p
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Mensagempor gibim » 15 Jan 2007 11:01

Esse (char*) é chamado de typeCast, ou seja, você está informando ao compilador que o tipo do elemento a frente é conhecido, ou que mesmo sendo diferente não vai dar problemas.

Quando se faz isso, o compilador assume que está tudo certo e não dá nenhum aviso, mas pode acontecer certos problemas de alinhamente se inicialmente você projeta para ler em char e de repente, muda o tipo pra int.

Use os typeCast de forma cautelosa... Já tive problemas de "esquecimento" pois tinha declarado um tipo, mudado, e quando compilava, ele não dava os warning pois tinha inserido o (char*)
Avatar do usuário
gibim
Byte
 
Mensagens: 117
Registrado em: 08 Nov 2006 21:40
Localização: Londrina - PR


Voltar para ARM

Quem está online

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

x