Array vorbelegen: excess elements in array initializer

Gast #2847841
Lesenswert?
• ▲
▼
Nabend,

ich versuche gerade einen array vorzubelegen:
1
const int16_t TestArray [179] PROGMEM = {
2

3
  1,1,1,1,1,1,1,1,1,1,
4
  1,1,1,1,1,1,1,1,1,1,
5
  1,1,1,1,1,1,1,1,1,1,
6
  1,1,1,1,1,1,1,1,1,1,
7
  1,1,1,1,1,1,1,1,1,1,
8
  1,1,1,1,1,1,1,1,1,1,
9
  1,1,1,1,1,1,1,1,1,1,
10
  1,1,1,1,1,1,1,1,1,1,
11
  1,1,1,1,1,1,1,1,1,1,
12
  1,1,1,1,1,1,1,1,1,1,
13
  1,1,1,1,1,1,1,1,1,1,
14
  1,1,1,1,1,1,1,1,1,1,
15
  1,1,1,1,1,1,1,1,1,1,
16
  1,1,1,1,1,1,1,1,1,1,
17
  1,1,1,1,1,1,1,1,1,1,
18
  1,1,1,1,1,1,1,1,1,1,
19
  1,1,1,1,1,1,1,1,1,1,
20
  1,1,1,1,1,1,1,1,1,1
21
};

Der Array enthält wie man sieht 180 Stellen (hier nur Einsen Testweise). 
Die Größe des Arrays habe ich mit 179 definiert, da ja C bei 0 beginnt 
und demnach von 0 bis 179 --> 180 Stellen vorhanden sind.
Dennoch  meckert der Compiler:
test.c:386: warning: excess elements in array initializer
test.c:386: warning: (near initialization for 'TestArray')

Definiere ich die Größe statt 179 auf 180 ist die Warnung weg. Verstehe 
ich aber nicht ganz, da ja C wie gesagt ab 0 initialisiert.
Kann mir das jemand erklären?

Danke.
Gast #2847998
Lesenswert?
• ▲
▼
Daniel schrieb:
> Der Array enthält wie man sieht 180 Stellen (hier nur Einsen Testweise).
> Die Größe des Arrays habe ich mit 179 definiert, da ja C bei 0 beginnt

... beim Index, da der sich aus dem Offset zum ersten Element ergibt.

> und demnach von 0 bis 179 --> 180 Stellen vorhanden sind.

Genau. Index 0 bis 179, macht eine Größe von 180 Stellen, also mußt du 
als Größe 180 angeben.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 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.