In C geht es genaugenommen nicht. Aber dies ist C++. Und da geht es wie in anderen Sprachen auch. Einfach eine Funktion erstellen, die eine andere Signatur aber den gleichen Namen hat:
Allerdings hier sind auch templates eine sehr schöne Option. Damit muss man nur eine Funktion erstellen. Den Rest erledigt der Compiler:
template<typename T>
void bubblesort(T* array, int length)
{
int i, j;
for (i = 0; i < length -1; ++i) {
for (j = 0; j < length - i - 1; ++j) {
if (array[j] > array[j + 1]) {
T tmp = array[j];
array[j] = array[j + 1];
array[j + 1] = tmp;
}
}
}
}
Wegen dem template. Ich habe gerade mal versucht damit rumzuspielen und gemerkt, dass ich es doch mal in der Arduino IDE statt nur in Visual C++ hätte testen sollen.
Wenn du das in eine .h Datei schreibst und diese inkludierst funktioniert das. Aber wenn du es so in den Arduino Sketch schreibst, legt dich leider die Arduino IDE rein. Die will das nämlich in die .cpp Datei schreiben und das geht nicht. Templates gehören in einen Header. Grrrrrr!!
Habe mal eine Header Datei angehängt. Wenn du Sketch -> Add File damit machst, dann geht das so:
Was man schön sieht ist das templates Code Generatoren sind. Mit jeder zusätzlichen Verwendung von bubblesort() mit anderen Datentyp steigt die Sketch-Größe