- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 14

Thema: eine struct als Parameter an Funktion übergeben...?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Vom Prinzip scheints richtig zu sein.

    Für das ABER, habe ich das hier gefunden. Dort gibt es dasselbe Problem mit "variable or field '......' declared void"und auch eine Lösung dafür: https://forum.arduino.cc/index.php?topic=381325.0

    MfG

  2. #2
    HaWe
    Gast
    verstehe ich nicht, was soll ich da jetzt wo hinzufügen?

    - - - Aktualisiert - - -

    aaah...
    ich glaube, ich habs:
    es klappt,
    man muss die struct ganz oben definieren, vor allen #includes etc.

    danke!!
    Geändert von HaWe (02.12.2018 um 17:47 Uhr)

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Keine Ahnung, kenne mich doch damit selber nicht aus. Musst Du mal lesen und mit Deinen Sachen vergleichen.

  4. #4
    HaWe
    Gast
    ja, es klappt, danke!

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Prima, freut mich!

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    903
    Wenn Du an irgendeiner Stelle in C eine Funktion aufrufst, muss der Compiler nicht wissen, was in der Funktion an Code steht. Er muss aber den Funktionsrumpf (Name, Parameter, Rückgabewert) für die Codeauflösung kennen. Steht die eigentliche Funktion weiter unten hinter dem Aufruf, erledigt man diese Bekanntmachung üblicherweise über eine Funktionsdeklaration (Vorwärtsreferenz):

    void DoSomething(int hellIsFrozen); //The forward reference (function header with ending semicolon)

    void main(){DoSomething(42);} //The call
    void DoSomething(int hellIsFrozen){while(hellIsFrozen);} //The function

    Typischer Halbblödenautomatismus: Um die manuelle Deklaration von Vorwärtsreferenzen zu vermeiden, legt der Arduino-Compiler ungefragt für jede Funktion eine Deklaration unterhalb der #includes an. Dass eine dieser Deklarationen einen Datentyp verwendet, der erst danach im Code deklariert wurde, scheint dabei in Kauf genommen zu werden, ebenso wie die nicht reproduzierbare Fehlermeldung, die naturgemäß nur auf eine vom Compiler erzeugte Codezeile (genau auf die automatisch generierte Vorwärtsreferenzzeile, also quasi für den User nicht nachvollziehbar) verweisen kann.

    Ich will das Arduino-Konzept nicht allgemein schlecht reden. Aber DAS ist wirklich dilletantisch gemacht.

  7. #7
    HaWe
    Gast
    ja, genau:
    es lag nicht an der Funktion, die stand an der richtigen Stelle.
    auch die struct war ursprünglich schon an der richtigen Stelle.
    Es lag am temp. generierten Arduino-Zwischencode.
    Muss man mal bei github als issue melden.

Ähnliche Themen

  1. Array an Funktion übergeben
    Von jok3r im Forum Arduino -Plattform
    Antworten: 7
    Letzter Beitrag: 02.04.2014, 22:19
  2. Array an Funktion übergeben
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 02.05.2013, 21:23
  3. PORTx per Parameter an Funktion übergeben
    Von Jaecko im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 06.01.2012, 07:31
  4. Register an Funktion übergeben
    Von EDatabaseError im Forum C - Programmierung (GCC u.a.)
    Antworten: 15
    Letzter Beitrag: 02.11.2008, 14:10
  5. Referenzen, Parameter für TWI-Funktion
    Von Minifriese im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 11.01.2008, 20:54

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress