|
| Function declared implicitly ? Fra : Lasse Madsen |
Dato : 17-05-05 14:45 |
|
Hej !
Jeg har en warning i min compiler jeg ikke kan få væk:
"IAR Embedded Workbench version 3.20A"
Fejlen er:
Warning[Pe223]: function declared implicitly
og linje 223 er: x=strpos(ptr,',');
se evt. fuld kode nedenfor...
Jeg bruger strpos på samme måde andre steder i min kode men hvorfor klager
den her ?
char check_boundry ( char *buffer )
{
char x;
if ( GPS_FIX() == 1 )
{
return 0;
}
else
{
if ( buffer[0] == '$' && buffer[3] == 'R' && buffer[4] == 'M' &&
buffer[5] == 'C' )
{
char cs=0;
char *ptr;
for ( x = 1 ; buffer[x] != '*' && x < 76 && buffer[x]!='\0' ; x++ )
cs=cs^((unsigned char)buffer[x]);
if ( buffer[x] == '*' )
{
ptr = &buffer[x+1];
buffer[x+3]='\0';
}
else
{
return 0;
}
if ( strcmp ( ptr, dec2hex(cs) ) == 0 )
{
unsigned char NS,EW,OK,y;
unsigned long llat,llon,date,UTC;
unsigned int sspeed,hheading;
float lat,lon,speed,heading;
float temp;
ptr = &buffer[7];
x=strpos(ptr,','); // FEJLEN ER HER ! LINJE 223 !!!
buffer[x+7]='\0';
UTC = atol(ptr);
OK = buffer[x+8];
M.v.h.
Lasse
| |
Jesper Sørensen (17-05-2005)
| Kommentar Fra : Jesper Sørensen |
Dato : 17-05-05 14:52 |
|
Lasse Madsen skrev:
> Hej !
>
> Jeg har en warning i min compiler jeg ikke kan få væk:
>
> "IAR Embedded Workbench version 3.20A"
>
> Fejlen er:
>
> Warning[Pe223]: function declared implicitly
>
> og linje 223 er: x=strpos(ptr,',');
>
> se evt. fuld kode nedenfor...
>
> Jeg bruger strpos på samme måde andre steder i min kode men hvorfor klager
> den her ?
>
>
> char check_boundry ( char *buffer )
> {
> char x;
> if ( GPS_FIX() == 1 )
> {
> return 0;
> }
> else
> {
> if ( buffer[0] == '$' && buffer[3] == 'R' && buffer[4] == 'M' &&
> buffer[5] == 'C' )
> {
> char cs=0;
> char *ptr;
> for ( x = 1 ; buffer[x] != '*' && x < 76 && buffer[x]!='\0' ; x++ )
> cs=cs^((unsigned char)buffer[x]);
>
> if ( buffer[x] == '*' )
> {
> ptr = &buffer[x+1];
> buffer[x+3]='\0';
> }
> else
> {
> return 0;
> }
>
>
>
>
> if ( strcmp ( ptr, dec2hex(cs) ) == 0 )
> {
> unsigned char NS,EW,OK,y;
> unsigned long llat,llon,date,UTC;
> unsigned int sspeed,hheading;
> float lat,lon,speed,heading;
> float temp;
> ptr = &buffer[7];
> x=strpos(ptr,','); // FEJLEN ER HER ! LINJE 223 !!!
> buffer[x+7]='\0';
> UTC = atol(ptr);
> OK = buffer[x+8];
>
>
>
> M.v.h.
> Lasse
>
>
kan det være fordi ptr ikke altid bliver tildelt en værdi, prøv at
initialisere den i starten for at se om fejlen forsvinder.
mvh
Jesper
| |
Jesper Sørensen (17-05-2005)
| Kommentar Fra : Jesper Sørensen |
Dato : 17-05-05 14:54 |
|
Jesper Sørensen skrev:
> Lasse Madsen skrev:
>
>> Hej !
>>
>> Jeg har en warning i min compiler jeg ikke kan få væk:
>>
>> "IAR Embedded Workbench version 3.20A"
>>
>> Fejlen er:
>>
>> Warning[Pe223]: function declared implicitly
>>
>> og linje 223 er: x=strpos(ptr,',');
>>
>> se evt. fuld kode nedenfor...
>>
>> Jeg bruger strpos på samme måde andre steder i min kode men hvorfor
>> klager den her ?
>>
>>
>> char check_boundry ( char *buffer )
>> {
>> char x;
>> if ( GPS_FIX() == 1 )
>> {
>> return 0;
>> }
>> else
>> {
>> if ( buffer[0] == '$' && buffer[3] == 'R' && buffer[4] == 'M' &&
>> buffer[5] == 'C' )
>> {
>> char cs=0;
>> char *ptr;
>> for ( x = 1 ; buffer[x] != '*' && x < 76 && buffer[x]!='\0' ; x++ )
>> cs=cs^((unsigned char)buffer[x]);
>>
>> if ( buffer[x] == '*' )
>> {
>> ptr = &buffer[x+1];
>> buffer[x+3]='\0';
>> }
>> else
>> {
>> return 0;
>> }
>>
>>
>>
>>
>> if ( strcmp ( ptr, dec2hex(cs) ) == 0 )
>> {
>> unsigned char NS,EW,OK,y;
>> unsigned long llat,llon,date,UTC;
>> unsigned int sspeed,hheading;
>> float lat,lon,speed,heading;
>> float temp;
>> ptr = &buffer[7];
>> x=strpos(ptr,','); // FEJLEN ER HER ! LINJE 223 !!!
>> buffer[x+7]='\0';
>> UTC = atol(ptr);
>> OK = buffer[x+8];
>>
>>
>>
>> M.v.h.
>> Lasse
>>
> kan det være fordi ptr ikke altid bliver tildelt en værdi, prøv at
> initialisere den i starten for at se om fejlen forsvinder.
>
> mvh
> Jesper
Arh glem det, my mistake :). Jeg tror lige jeg trænger til en pause fra
tastaturet.
Jesper
| |
Ivan Johansen (17-05-2005)
| Kommentar Fra : Ivan Johansen |
Dato : 17-05-05 15:01 |
|
Lasse Madsen wrote:
> Warning[Pe223]: function declared implicitly
>
> og linje 223 er: x=strpos(ptr,',');
>
> se evt. fuld kode nedenfor...
>
> Jeg bruger strpos på samme måde andre steder i min kode men hvorfor klager
> den her ?
Du skal deklarere funktionen før du bruger den:
unsigned char strpos(const char*, char);
Dette gøres normalt i en header-fil som inkluderes i c-filen.
Ivan Johansen
| |
Lasse Madsen (17-05-2005)
| Kommentar Fra : Lasse Madsen |
Dato : 17-05-05 15:42 |
|
kan det godt nok passe at strpos ikke er en standard del af string.h ?!
den findes ihvertfald ikke i include filen !!?
/madsen
"Ivan Johansen" <NG5@Padowan.remove.dk> skrev i en meddelelse
news:4289f921$0$308$edfadb0f@dread11.news.tele.dk...
> Lasse Madsen wrote:
>> Warning[Pe223]: function declared implicitly
>>
>> og linje 223 er: x=strpos(ptr,',');
>>
>> se evt. fuld kode nedenfor...
>>
>> Jeg bruger strpos på samme måde andre steder i min kode men hvorfor
>> klager den her ?
>
> Du skal deklarere funktionen før du bruger den:
> unsigned char strpos(const char*, char);
>
> Dette gøres normalt i en header-fil som inkluderes i c-filen.
>
> Ivan Johansen
| |
Claus Pedersen (17-05-2005)
| Kommentar Fra : Claus Pedersen |
Dato : 17-05-05 16:34 |
|
"Lasse Madsen" <spam@electrologic.dk> skrev i en meddelelse
news:428a02c5$0$67257$157c6196@dreader2.cybercity.dk...
> kan det godt nok passe at strpos ikke er en standard del af string.h ?!
> den findes ihvertfald ikke i include filen !!?
--- 8< 8< 8< ---------
I din første post i tråden skriver du at du bruger IAR Embedded Workbench
version 3.20A. Det lugter jo lidt af noget programmering til en
microprocessor af en eller anden art.
I så tilfælde, kan det godt være der, problemet ligger. Jeg har i hvert fald
set/ladet mig fortælle, at nogen microprocessorer (som understøttes af IAR
Embedded Workbench) ikke anvender standard implementationer af pointers.
Mit råd er i hvert fald at læse noget relevant dokumentation samt at kigge
på om string.h er tilgængelig på den måde du tror/gerne vil have at det er
tilgængeligt.
Venligst
Claus Pedersen
| |
Ivan Johansen (17-05-2005)
| Kommentar Fra : Ivan Johansen |
Dato : 17-05-05 19:59 |
|
Lasse Madsen wrote:
> kan det godt nok passe at strpos ikke er en standard del af string.h ?!
> den findes ihvertfald ikke i include filen !!?
Så vidt jeg ved er der ikke nogen funktion i standard C som hedder
strpos() (i hvert fald ikke i C89). derfor antog jeg at det var en
funktion du selv havde skrevet. Du tænker muligvis på strchr() som
bruges til at søge efter et tegn i en streng.
I stedet for:
x=strpos(ptr,',');
kan du skrive:
x = strchr(ptr, ',') - ptr;
Ivan Johansen
| |
Mogens Hansen (17-05-2005)
| Kommentar Fra : Mogens Hansen |
Dato : 17-05-05 20:20 |
|
"Ivan Johansen" <ng6@padowan.REMOVE.dk> wrote in message
news:428a3f0c$0$182$edfadb0f@dtext02.news.tele.dk...
[8<8<8<]
> I stedet for:
> x=strpos(ptr,',');
>
> kan du skrive:
> x = strchr(ptr, ',') - ptr;
Hvis man er sikker på at tegnet findes i ptr - eller trækker man noget fra
en nul pointer.
Venlig hilsen
Mogens Hansen
| |
|
|