Página 1 de 1
unsigned X const [hitech]

Enviado:
07 Nov 2006 14:16
por eagle_good
qdo compilado desta forma.... OK
void lcd_putstr(const char *s)
{
while(*s)lcd_write((*s++),1);
}
mas qdo compilo assim....ocorre falha no hitech
void lcd_putstr(unsigend char *s)
{
while(*s)lcd_write((*s++),1);
}
no keil(mcs51) o correto e (unsigned char *s).......
Qual a diferenca????

Enviado:
07 Nov 2006 17:55
por ivan
void lcd_putstr(unsigend char *s)
void lcd_putstr(
unsigned char *s)

Enviado:
08 Nov 2006 09:18
por eagle_good
heim ivan ...num entendi nada......qual a diferença...
void xxxxx(const char*)
void xxxxx(unsigned char*)
ate ...... onde pensava que .... const era armazenada na flash conforme ansi c ....inclusive aplicado no keil....etc...

Enviado:
08 Nov 2006 13:16
por Renie
Olá Bruno!
A diferença que o Ivan apontou é que unsiGNED estava escrito errado!

Enviado:
08 Nov 2006 13:31
por eagle_good
Ola..Renie....e galera....
e apenas um erro de digitação no forum, mas no ide esta correto
e portanto continua assim ....
Warning[000] C:\Documents and Settings\Administrador\Desktop\projeto\kernel.c 36 : illegal conversion between pointer types
Warning[000] C:\Documents and Settings\Administrador\Desktop\projeto\kernel.c 38 : illegal conversion between pointe
veja o que encontrei.....na net a respeito.....
Pointers to Program Memory Space
In both compilers, a “char * “is a pointer to data memory space.
In the PICC18 compiler, a “const char *” is a pointer to program memory space.
In the MCC18 compiler, a “rom far const char *” or “rom near const *” is a pointer to program memory space, depending on if the large or small code model is used.
Be careful not to pass a program memory pointer to a function expecting a data memory pointer. In both compilers, if you do something like:
foo(“Hello There!”)
the string “Hello There!” is placed in program memory space. If the function foo() is declared as:
foo(char *s){
then the function foo() will not operate correctly as it is expecting a pointer to data memory, but it is being passed a pointer to program memory space.
mas num entendi essa......alguem poderia ser mais simples..?????

Enviado:
08 Nov 2006 17:26
por Renie
Olá Bruno!
Eu não uso C, e ainda nem brinquei com os 18F mas, pelo que eu entendí:
Você está fazendo alguma coisa parecida com isso no seu programa:
lcd_putstr("mensagem")
A string "mensagem" faz parte do seu código, portanto está na flash,
para manipular ponteiros da flash tem que usar CONST antes da declaração (ou ROM NEAR / ROM FAR dependendo do compilador), se usar só a declaração CHAR *, você só pode passar strings que estejam na
ram.