Multidimensionales Array an Funktion übergeben in C (ESP8266)
Hallo,
bei meinem Github-Projekt [OilMeter https://github.com/Phreak87/OilMeter]
möchte ich ein wenig den Code modularisieren und wollte deshalb mein
Multidimensionales Array an eine Funktion übergeben:
Array:
Funktion:
Aufruf im Loop:
Das Array ist public, weshalb ich gerne die Referenz auf das Array übergeben würde.
Ich scheitere jedoch daran dass die Funktion das Array wirklich bekommt. Der Serial.Print gibt
bei der Array länge 0 Zeilen aus. wenn ich das Array direkt anspreche dann wird die richtige
Anzahl der Zeilen ausgegeben.
Könnt ihr mir als blutigem Anfänger erklären was ich hier falsch mache - evtl. mit einem Beispiel?
die Sache mit den Pointern und char arrays- sowie den pointern auf char arrays (und array-arrays*) hab
ich irgendwie noch nicht so richtig verstanden ...
Wie müsste ich das Array/die Funktion korrekt definieren und übergeben um das gewünschte Resultat zu erreichen?
(PublishHASS2(&HASSDistance); compiliert erst gar nicht ... ).
Wie im Titel erwähnt sollte das ganze auf dem ESP8266 funktionieren ...
Grüße
Phreak87
bei meinem Github-Projekt [OilMeter https://github.com/Phreak87/OilMeter]
möchte ich ein wenig den Code modularisieren und wollte deshalb mein
Multidimensionales Array an eine Funktion übergeben:
Array:
const char HASSDistance[][7][32]= {
// {"homeassistant/sensor/oilmeter/color_r/config", "Color_R", "oilmeter/sensor/0/R", "OilMeter_Sensor0_R", "RGB", "gas", "measurement"},
// HASS-NODE NAME STATE-TOPIC UNIQUE-ID EAS-Unit DEV-CLA STATE-CLASS
{"Dist/config", "Distanz", "sensor/HCSR04/Dist", "Sensor0_R", "cm", "water", "measurement"},
{"ActTankL/config", "Tankinhalt_Aktuell", "ActTankL", "ActTankL", "L", "water", "measurement"},
{"MaxTankL/config", "Tankinhalt_Maximal", "MaxTankL", "MaxTankL", "kWh", "water", "measurement"}
};
Funktion:
void PublishHASS2 (const char Array [][7][32]){
Serial.println ("(re-)publishing HASS-Topics");
int size = sizeof (Array) / sizeof (Array[0]);
Serial.println (size);
...
}
Aufruf im Loop:
PublishHASS2(HASSDistance);
Das Array ist public, weshalb ich gerne die Referenz auf das Array übergeben würde.
Ich scheitere jedoch daran dass die Funktion das Array wirklich bekommt. Der Serial.Print gibt
bei der Array länge 0 Zeilen aus. wenn ich das Array direkt anspreche dann wird die richtige
Anzahl der Zeilen ausgegeben.
Könnt ihr mir als blutigem Anfänger erklären was ich hier falsch mache - evtl. mit einem Beispiel?
die Sache mit den Pointern und char arrays- sowie den pointern auf char arrays (und array-arrays*) hab
ich irgendwie noch nicht so richtig verstanden ...
Wie müsste ich das Array/die Funktion korrekt definieren und übergeben um das gewünschte Resultat zu erreichen?
(PublishHASS2(&HASSDistance); compiliert erst gar nicht ... ).
Wie im Titel erwähnt sollte das ganze auf dem ESP8266 funktionieren ...
Grüße
Phreak87
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6978029782
Url: https://administrator.de/contentid/6978029782
Ausgedruckt am: 20.11.2024 um 00:11 Uhr
1 Kommentar