Ich deklariere und initialsiere eine int zahl1 und int feld1[5] jeweils
in einem Befehl ohne Probleme. Jetzt möchte ich für die gleichen
Variablentypen die Deklaration und Initialisierung trennen. Für int
zahl2 funktioniert das problemlos. Für int feld2[5] funktioniert nur die
Deklaration. Folglich compiliert der unten angegebene Code erfolgreich.
Bei der von der Deklaration getrennten Initialisierung für feld2[] ist
das nicht mehr der Fall: Entferne ich in der auskommentierten Zeile die
"//" gibt es dort die Fehlermeldung "expected primary-expression before
']' token".
Was mache ich falsch?
Ingo Less schrieb:> Jetzt muss ich mal ganz dumm fragen, ob es da einen Unterschied gibt> bezüglich der Frage des TO?
Ja, denn bei AVR braucht es PROGMEM und memcpy_P und der AVR-GCC hat
keine vollständige C++ Standard Library.
Johann L. schrieb:> Und ja, das geht auch mit avr-gcc / avr-g++.
Landet das Array denn dann im Flash? Wenn der Code das erst in den RAM
kopiert und dann nach feld2...
Johann L. schrieb:> memcpy (feld2, (const int[]) { 18, 39, 42, 25, 69 }, sizeof (feld2));
Das Compound-Literal gibt es strenggenommen nur in C, nicht aber in C++,
wo es lediglich als GCC-spezifische Spracherweiterung verfügbar ist. In
der Arduino-Welt spielt das aber vermutlich keine Rolle.
Was hat das mit Arduino zu tun wenn es im gcc enthalten ist? Wenn es
verfügbar ist, dann ist es verfügbar, dann ist es verfügbar, dann ist es
verfügbar, dann ist es verfügbar, dann ist es verfügbar, dann ist es
verfügbar...
Eine eigene Frage?
Dieser Thread ist über 7 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.