Go Down

Topic: Compilerfehler: redefinition of 'int getIntFromString(char*, byte)'  (Read 1 time) previous topic - next topic

Doc_Arduino

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.

Quote
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:
Code: [Select]

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?
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Eisebaer

hi,

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

gruß stefan

Doc_Arduino

Hallo,

ach Sch...  man äh. Da sucht man sich einen Wolf und derweile hat man es doppelt drin.
Vielen vielen Dank!  
 :)
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Eisebaer

hi, doc,

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

Quote
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

Doc_Arduino

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.  ;)
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Go Up