initializer element is not constant problem

Gast #6582559
Lesenswert?
• ▲
▼
Hallo,
ich habe ein Problem, wo ich nicht weiterkomme.
1
tpedef struct
2
{
3
  uint16_t lowerLimit;
4
  uint16_t upperLimit;
5
}sensorLimit_ts
6

7
typedef struct
8
{
9
  sensorLimit_ts sensorLimit_s[2]
10
}sensorLimitParameter_ts
11

12
typedef struct
13
{
14
  const senorName_e name;
15
  sensorLimit_ts limit;
16
}sensorInformation_ts
17

18
const sensorLimitParameter_ts sensorLimit
19
{
20
  .sensorLimit_s[0] =
21
  {
22
    .lowerLimit = 0,
23
    .upperLimit = 10000,
24
  },
25
  .sensorLimit_s[1] =
26
  {
27
    .lowerLimit = 0,
28
    .upperLimit = 10000,
29
  }
30
};
31

32
static sensorInformation_ts sensorInfo_as[2]=
33
{
34
  {
35
    PRESSURE_SENSOR_1,
36
    sensorLimit.sensorLimit_s[0],
37
  },
38
  {
39
    PRESSURE_SENSOR_2,
40
    sensorLimit.sensorLimit_s[1],
41
  }
42
}

ich bekomme bei der definition von sensorInfo_as den fehler "initializer 
element is not constant" auf sensorLimit.sensorLimit_s[0] und 
sensorLimit.sensorLimit_s[1]
#6582584
Lesenswert?
• ▲
▼
Ja, das geht so nicht. Mit oder ohne const, der Wert von sensorLimit, 
und damit auch sensorLimit.sensorLimit_s[0], ist beim Kompilieren noch 
nicht bekannt. Dessen Adresse könnte man aber verwenden 
(&sensorLimit.sensorLimit_s[0]).
Das const repräsentiert eher Readonly als Constante.
Beitrag #6583115 wurde von einem Moderator gelöscht.
Gast #6583892
Lesenswert?
• ▲
▼
Oliver S. schrieb:
> Die ganze Typenhierarchie ist doch völlig aua. Wofür brauchst du
> die
> ganzen structs mit den limits, wenn letzendlich ein Sensor nur genau ein
> lower- und ein upper limit hat.
>
> Schreib die direkt hin, und gut ist.

Das KISS Prinzip gerät immer mehr in Vergessenheit in der IT. Man will 
ja allen zeigen was für ein toller Hecht ist. ;-) Struct hier, template 
dort, abstrakte Basisklasse muss auch immer sein, getter setter.... 
usw...usf... :-)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.