Compilerfehler: redefinition of 'int getIntFromString(char*, byte)'

Hallo,

ich bin dabei in meinen Megasketch, wo kaum ein anderer durchsehen wird, noch die Funktion von jurs zum RTC Uhr stellen einzubauen. Wenn ich das für mich anpasse, funktioniert der Code in seinem kleinen Testsketch. Übernehme ich das 1:1 in mein großes Projekt, bekomme ich einen Compilerfehler. Obwohl der Code nur erstmal im Sketch steht, wird noch nirgendswo aufgerufen. Alle Variablen sind lokal.

RTC.ino: In function 'int getIntFromString(char*, byte)':
RTC:363: error: redefinition of 'int getIntFromString(char*, byte)'
RTC:100: error: 'int getIntFromString(char*, byte)' previously defined here

Testsketch:

void setup() {
  Serial.begin(38400);
  Befehl_abarbeiten();
}

void loop() {
  // empty
}


// -------------------------------------------------------------------

void Befehl_abarbeiten ()
{
  char setRTCstring[26] = "setRTC 19.06.15 17:12:54";
  byte tag, monat, jahr, stunden, minuten, sekunden = 0;
  // Alle übermittelten Zahlen im String auslesen
    tag     =getIntFromString (setRTCstring,1);
    monat   =getIntFromString (setRTCstring,2);
    jahr    =getIntFromString (setRTCstring,3);
    stunden =getIntFromString (setRTCstring,4);
    minuten =getIntFromString (setRTCstring,5);
    sekunden=getIntFromString (setRTCstring,6);   
 
  Serial.println(tag); Serial.println(monat); Serial.println(jahr); Serial.println(stunden);
  Serial.println(minuten); Serial.println(sekunden);
}    

// Funktion von jurs
int getIntFromString (char *stringWithInt, byte num)
// input: pointer to a char array
// returns an integer number from the string (positive numbers only!)
// num=1, returns 1st number from the string
// num=2, returns 2nd number from the string, and so on
{
  char *tail; 
  while (num>0)
  {
    num--;
    // skip non-digits
    while ((!isdigit (*stringWithInt))&&(*stringWithInt!=0)) stringWithInt++;
    tail=stringWithInt;
    // find digits
    while ((isdigit(*tail))&&(*tail!=0)) tail++;
    if (num>0) stringWithInt=tail; // new search string is the string after that number
  }  
  return(strtol(stringWithInt, &tail, 10));
}

Im Projekt im Tab RTC ganz unten zu finden.

Wo liegt mein Fehler?

Projekt_Doc_076.zip (22.2 KB)

hi,

na Du hast die funktion ja auch zweimal im sketch stehen.
in zeile 100 und in zeile 363...

gruß stefan

Hallo,

ach Sch... man äh. Da sucht man sich einen Wolf und derweile hat man es doppelt drin.
Vielen vielen Dank!
:slight_smile:

hi, doc,

soll jetzt keine klugscheißerei sein, aber vielleicht ist es Dir ja wirklich nicht bewußt:

RTC:363: error: redefinition of 'int getIntFromString(char*, byte)'
RTC:100: error: 'int getIntFromString(char*, byte)' previously defined here

da stehen die zeilennummern in der fehlermeldung.
also nix für ungut, falls Dir das eh klar war...

gruß stefan

Hallo,

ne, hab ich noch nicht mitbekommen. Danke.
Wenn ich jetzt die Fehlermeldungen mit zeitlichen Abstand lese ergibt das alles Sinn. Steht eigentlich alles da was man wissen muß. Ist manchmal auch zu blöd wenn man gedanklich mittendrin steckt und nicht rausguckt. :wink: