Bibliothek Funktion aufrufen

Hallo miteinander, ich versuche momentan ein paar funktionen in eine Header Datei auszulagen. Allerdings kann ich keine Funktion inerhalb einer anderen aufrufen. ich brauche euren rat.

Hier ein Beispiel Code

Beispiel.ino

#include "testfile.h"

void setup() {
  // put your setup code here, to run once:
Serial.begin(115200);
}

void loop() {
  funktion1();

}

testfile.h

#include "Arduino.h"




void funktion1() {
 funktion2();
      
}

void funktion2() {
Serial.println("Hallo Welt");
  
}

als fehler bringt er mir:

exit status 1 'funktion2' was not declared in this scope

Wenn du die Programmierweise verlässt du die dir durch die Arduino IDE angewöhnt hast, musst du auch lernen was dir die IDE bisher abgenommen hat:

Stichwort: Vorausdeklaration Ich danke dir. :)

ich bin der Meinung das so etwas (eine ganze Definition einer Funktion) nicht in eine header datei gehört:

void funktion2() {
Serial.println("Hallo Welt");
 }

Entweder benennst deinen Tab nur testfile (ohne h.) dann macht die IDE auch alle notwendigen Datentypen,

oder du legst in Vorbereitung auf eine spätere Library wirklich eine testfile.h mit Deklarationen und Prototypen an und eine testfile.cpp mit den Definitionen an

testfile.cpp

#include "testfile.h"
// Definitionen 

void funktion1() {
  funktion2();
}

void funktion2() {
  Serial.println("Hallo Welt");
}

testfile.h

#pragma once
#include "Arduino.h"
// nur Deklarationen und Prototypen

void funktion1();

void funktion2();

ich bin der Meinung das so etwas (eine ganze Definition einer Funktion) nicht in eine header datei gehört

Zu einem gewissen Prozentsatz ist das sicherlich richtig. Aber es gibt auch durchschlagende Argumente in die andere Richtung.

Eigentlich sollten alle Definitionen (außer inline) in ein cpp-File. Ich verstoße aber auch mal bei einfachen Gettern/Settern dagegen.

Gruß Tommy