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

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