Arduino - Struktur initialisieren klappt nicht

Gast #5188466
Lesenswert?
• ▲
▼
Hi ihr!

Ich habe eine Struktur definiert, um die globalen Variablen etwas 
aufzuräumen:

1
typedef struct {
2
  Servo servo;
3
  unsigned int   pin;
4
  unsigned int   angle_min;
5
  unsigned int   angle_max;
6
}t_servo;

Wenn ich jetzt einen Servo konkret anlegen will z.B.:
1
t_servo servo1 = {.pin=5, .angle_min=50, .angle_max=110};
Arduino: 1.8.5 (Windows 10), Board: "Arduino Nano, ATmega328P"
sorry, unimplemented: non-trivial designated initializers not supported

t_servo servo1 = {.pin=5, .angle_min=50, .angle_max=110};

                                                        ^

Tja und darum frage ich euch, was ich da falsch mache...eigentlich 
wollte ich nachher dann über weitermachen
1
static void ServoInit(t_servo* s) 
2
{
3
  s->servo.attach(s->pin);
4
  s->servo.write(s->angle_min);
5
};
Gast #5188515
Lesenswert?
• ▲
▼
Vielen Dank!

auch wenn der C-Lehrer sich jetzt (hoffentlich) selber dämlich vorkommt: 
postet doch einfach nicht, wenn ihr nichts zu sagen habt. Das würde den 
Signal-Rauschabstand im Forum wirklich verbessern. Nicht jeder der eine 
Arduino Frage hat ist doch zwingend ein Idiot...

c++ kann ich leider nicht, anscheinend sollte ich mich aber damit 
beschäftigen, wenn ich etwas mit Arduino spielen möchte.
Ich habe das System letzte Woche entdeckt und es gefällt mir sehr gut, 
weil man so gut damit spielen kann. Die zeitintensiven Dinge wie 
low-Level Treiber für Sensoren etc. ja breit verfügbar und Zeit ist ja 
in der Freizeit immer zu wenig.
Gast #5188738
Lesenswert?
• ▲
▼
Klar; Nur auf welche Beiträge trifft das nicht zu. In meinen Augen ist 
ein Forum wie das hier genau für solche Fragen wie die, die ich stellte 
da. Hier ist doch kein Marktplatz der Nobelpreisträger.

Was wäre denn deinem Anspruch gerecht geworden? In welchem Foren fühlst 
du dich wohl? Vielleicht lohnt es da mal rein zu gucken.
Ich bitte ernsthaft um Antwort!
#5188812
Lesenswert?
• ▲
▼
Etwas Signal im Rauschen (ergänzend zu Rufus):
Was du machen möchtest sind "Designated Initializers", siehe 
https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html. Die gibts in 
C++ aber nicht.

Und du brauchst auch kein typedef in C++ und könntest überlegen, einen 
Constructor für die struct (ja, das geht) zu erstellen, siehe z.B. 
https://stackoverflow.com/questions/10859213/what-is-the-c-equivalent-to-cs-designated-initializers
Gast #5188844
Lesenswert?
• ▲
▼
Signal++;

Man kann theoretisch auch ein C- und H-File in der Ide mit "tabs" 
erzeugen und dann ins *.ino einbinden. Das kann man machen, wenn man die 
C-Files später sowieso auf andere Entwicklungssystem umziehen will.

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.