- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 43

Thema: strukturen, ein- und ausstieg

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hallo,

    ich versuche nun bestimmte funktionen, die ich in unterschiedlichen programmen verwenden möchte in eine lib "standard" (c & h) auszulagern...

    mit solchen z.b. klappt es einwandfrei:

    void accuspannung(void)
    sobald der funktion als rückgabewert z.b. eine variable zugeordnet wird wie hier:

    void batteryVoltageLow(uint8_t isVoltageLow)
    - in der standard.h steht dann:

    void batteryVoltageLow(void)
    funktioniert es nicht, die fehlermeldunge lautet:
    ../../RP6Lib/standard/standard.h|37|note: previous declaration of ‘batteryVoltageLow’ was here|
    wobei der eintrag in der standard.h moniert wird. Muss dort bei der deklaration auch die variable rein? wenn ich es dann mache:

    void batteryVoltageLow(uint8_t isVoltageLow)
    wird eine klammer verlangt:

    ../../RP6Lib/standard/standard.h|38|error: expected ‘)’ before ‘isVoltageLow’|
    seltsammerweise funktioniert es hier:

    standard.c:
    void I2C_transmissionError(uint8_t errorState)
    standard.h: steht nichts, da die funktion in der "RP6Control_I2CMasterLib.h" deklariert wird, und zwar so:

    void I2C_transmissionError(uint8_t errorState);
    könnte bitte jemand versuchen mir das zu erklären?
    gruß inka

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Wenn es eine Funktion void batteryVoltageLow(uint8_t isVoltageLow) gibt, muss sie auch im Header (.h) so deklariert werden. Dabei reicht es auch, nur void batteryVoltageLow(uint8_t) anzugeben.
    Was man oft vergißt, ist auch, dass hinter den Funktionsdeklarationen im Header jeweils ein ; stehen muss.
    Gruß
    Dirk

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Hallo Inka,

    Du wirfst noch etwas falsch mit den Begriffen um dich

    1. Rückgabewert, der steht links
    Also
    int f(void);
    Darf dann so verwendet werden:

    int f(void)
    {
    return (1);
    }

    void x(void)
    {
    int a;
    a = f();
    }

    2. void bedeutet nichts!
    Da wo also void steh gibt es keinen Parameter

    void f(void); // nimmt keine Werte an und liefert nichts zurück

    Folglich führt folgendes immer zu einem Fehler:

    int a;
    a = f(); // Error
    f(123); // Error

    3. Parameter, Übergabeparameter
    Das sind die Variablen welche in der Klammer stehen.
    void batteryVoltageLow(uint8_t isVoltageLow);
    Verlangt also nach ein Parameter , welcher beim Aufruf übergeben werden muss.
    In einem Fall kann die Funktion auch den Wert von sVoltageLow, im aufrufenden Teil, nicht verändern. Der Funktion wird nur eine Kopie von sVoltageLow übergeben.

    MfG Peter(TOO)

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 23.03.2012, 22:36
  2. Probleme feine Strukturen zu drucken für Platine
    Von Hellmut im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 12
    Letzter Beitrag: 20.12.2010, 13:35
  3. Antworten: 11
    Letzter Beitrag: 07.09.2008, 16:56
  4. Probleme bei Strukturen (Projekt Funkuhr)
    Von Wasserkäfer im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 19.07.2008, 15:10
  5. Ein Quarz für ein ATMEGA8 und ein ATMEGA16
    Von boeseTURBO-CT im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 14.06.2004, 16:07

Berechtigungen

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

LiFePO4 Speicher Test