Welcher compiler wird verwendet?

Gast #5162671
Lesenswert?

Guten morgen,
ich habe einen Code und wollte jetzt ein paar Warnings entfernen.
1
for(i=0; i<59; i++)
2
{
3
    seconds[i] = {0};
4
    minutes[i] = {0};
5
    hours[i] = {0};
6
}

hier sagt er mir zu jeder initialisierung
warning: extended initializer lists only available with -std=c++11 or 
-std=gnu++11

wo kann ich denn nachgucken, welchen compuler ich verwende? Ich benutze 
Atmel-Studio 7
Gast #5162691
Lesenswert?

Zwei Hinweise von mir:

Falls es sich um Integer Arrays handelt, kannst du die Initialisierung 
einfach mit = 0 machen. Dann ist die Warnung auch weg.

Bist du sicher, dass das hours Array 60 Einträge hat? Falls nicht, wir 
ein anderer Speicherbereich überschrieben.
Gast #5162702
Lesenswert?

Da ich die LEDs in rgb ansteuern kann, ist es in einem struct gepact.
1
    WS2818::cRGB seconds[60];
2
    WS2818::cRGB minutes[60];
3
    WS2818::cRGB hours[60];
4

5
    struct cRGB
6
    {
7
        uint8_t g;
8
        uint8_t r;
9
        uint8_t b;
10
    };

Später im Code schreibe ich alle übereinander zu einemn Array, den ich 
dann auf dem Stripe schicke. (Dadurch sollten dann wenn minuten und 
sekunden gleich sind eine neue Farbe ergeben).
1
for(i=0; i<60; i++)
2
{
3
  timerArray[i].r = seconds[i].r + minutes[i].r + hours[i].r;
4
  timerArray[i].g = seconds[i].g + minutes[i].g + hours[i].g;
5
  timerArray[i].b = seconds[i].b + minutes[i].b + hours[i].b;
6
}
Moderator #5162719
Lesenswert?

Marc schrieb:
> WS2818::cRGB seconds[60];

Marc schrieb:
> for(i=0; i<59; i++)
> {
>     seconds[i] = {0};
>     minutes[i] = {0};
>     hours[i] = {0};
> }

Ist es Absicht, dass von den 60 Array-Elementen nur die ersten 59 auf 0
gesetzt werden?

Statt

1
  seconds[i] = {0};

könntest du auch schreiben:

1
  seconds[i].r = 0;
2
  seconds[i].g = 0;
3
  seconds[i].b = 0;

Aber vielleicht verwendet der Code noch weitere C++11-Features. Deswegen
ist es besser, einfach wie vom Compiler vorgeschlagen die Option
-std=c++11 einzustellen.
Gast #5162771
Lesenswert?

Yalu X. schrieb:
> Ist es Absicht, dass von den 60 Array-Elementen nur die ersten 59 auf 0
> gesetzt werden?

Nein, ist natürlich jetzt auf <=59 gesetzt worden.

Yalu X. schrieb:
> Aber vielleicht verwendet der Code noch weitere C++11-Features. Deswegen
> ist es besser, einfach wie vom Compiler vorgeschlagen die Option
> -std=c++11 einzustellen.

Das werde ich wohl machen
Wo kann man das denn einstellen?
Gast #5162795
Lesenswert?

Frickelfritze schrieb:
> Is aba irgendwie doof wenn ein Tag 2.50 Tage lang ist.

Wieso? Ich lasse einen Timer laufen.
Alle 60 Sekunden werden die Minuten um eins erhöht.
Alle 60 Minuten werden die Stunden um eins erhöht.
Die Stunden werden dann für die LED's mit fünf multipliziert. Damit 
steuere ich dann die LED der stunde an und setze alle anderen auf null
Gast #5162801
Lesenswert?

> -std=c++11
> Wo kann man das denn einstellen?

Das ist eine Kommandozeilenoption für den Aufruf des gcc. Im Atmel 
Studio wirst du ein entsprechendes Engabefeld sicher irgendwo in den 
Projekteinstellungen finden. Oder im Makefile, falls du eins verwendest.
#5162839
Lesenswert?

Hallo,

>> -std=c++11
>> Wo kann man das denn einstellen?
>
> Das ist eine Kommandozeilenoption für den Aufruf des gcc. Im Atmel
> Studio wirst du ein entsprechendes Engabefeld sicher irgendwo in den
> Projekteinstellungen finden. Oder im Makefile, falls du eins verwendest.

in AtmelStudio das Projekt laden, dann im Menue
Projekt -> <Projekt> Properties... -> Toolchain -> AVR/GNU C Compiler -> 
Miscellaneous -> Other flags:

rhf

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren