interne Funktion in library

Hallo Zusammen

Ich habe mir eine eigene Library "gebaut", das funktioniert einwandfrei.

Nun will ich eine "interne" Funktion aufbauen, die von einzelnen Funktionen innerhalb der Library Aufgerufen werden. Gegen Aussen tritt die interne Funktion nicht auf.

Das Schema ist folgend:

int libname::funtion1{
var = internefunktion(paramF1)
irgendeincode
}

int libname::funtion2{
var = internefunktion(paramF2)
irgendnocheincode
}

int internefunktion (param){
Ergebnis = param * irgendwas
return Ergebnis
}

Ich weiss nicht wie ich meine Aufgabenstellung klarer ausdrücken soll.

Vielen Dank

Christoph

Die Funktion nicht im HeaderFile deklarieren, dann sollte sie intern bleiben. Ansonsten keine Ahnung, die Frage stellung ist nicht umbedingt eindeutig!

Meine Glaskugel sagt:

Du möchtest keine Funktion, sondern eine private Methode, erschaffen.

Christoph62:
Das Schema ist folgend:

Das Grundschema ist, dass Du eine Funktion erst deklarieren musst, bevor Du sie verwenden kannst, d.h. im Quellcode Deiner Library muß die Funktion ganz nach oben:

int internefunktion (param){
  Ergebnis = param * irgendwas
  return Ergebnis
}

und erst weiter darunter im Quelltext kannst Du diese Funktion dann aufrufen.

In Sketchdateien passiert das automatisch durch "magische" Funktionen der Arduino-IDE.
Aber im Librarydateien mußt Du selbst richtiges C/C++ als Quellcode schreiben, ohne Dich auf die Arduino-Magie im Hintergrund verlassen zu können.

Du bist Dir auch sicher, dass diese "interne Funktion" kein Bestandteil Deiner Objektklasse sein soll? Als Mitglied einer Objektklasse bräuchte die Funktion auch nicht alle Werte, mit denen sie rechnen soll, per Parameter übergeben bekommen, sondern könnte direkt auf Variablen zugreifen, die Bestandteil der Objektklasse sind.

Innerhalb von Klassen würde ich die C++ Zugriffsbeschränkungen für so etwas benutzen.

private:
nur für diese Klasse

protected:
für diese Klasse und ihre Kinder

public:
für alle

Edit: Funktioniert so natürlich nur mit/für Klassenfunktionen und Attributen,
ansonsten static deklarieren, dann kann man nicht gegen sie Linken.

Die Zugriffsberechtigungen werden im Header erledigt:

class MyClass
{
public:
  void publicMethod();

private:
  void privateMethod();
};

In der .cpp Datei definierst du dann die Funktionen:

void MyClass::publicMethod()
{
   privateMethod();
}

void MyClass::privateMethod()
{
   ...
}

Danke Euch allen und an der Terminologie arbeite ich noch

Christoph

Die deutlichste Unterscheidung die man machen kann ist von Methoden zu reden wenn sie zu Klassen gehören und ansonsten von Funktionen.

Wobei gerade im Englischen die Begriffen "member function" (Klassenfunktion) und "non-member function" weit verbreitet sind.