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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.