/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
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



Søg
Reklame
Statistik
Spørgsmål : 177449
Tips : 31962
Nyheder : 719565
Indlæg : 6408117
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste