-         

Ergebnis 1 bis 5 von 5

Thema: Atmel Studio modular Programmieren

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544

    Atmel Studio modular Programmieren

    Anzeige

    Hi,

    ich würde gerne anfangen, einzelne Funktionen meines Codes in verschiedene C-Dateien zu packen, um das ganze übersichtlicher zu machen und die Funktionen in mehreren Projekten zu verwenden.
    Ist es richtig, wenn ich in die Main-Datei einfach die jeweiligen .h Dateien einbinde?
    Also so:

    main.c
    Code:
    #include <File1.h>
    
    int main(void)
    {
        File1funktion1();
        while(1)
        {
            File1funktion2();
        }
    }
    File1.h
    Code:
    int16_t Variable1;
    int16_t Variable2;
    
    void File1funktion1(void);
    void File1funktion2(void);
    File1.c
    Code:
    void File1funktion1(void)
    {
        Variable1 -= 1;
        if(Variable1<10) { Variable1 = 25; }
    }
    
    void File1funktion2(void)
    {
        Variable2 -= Variable1;
    }
    Ich hoffe, ich hab das richtig verstanden?!
    Vielen Dank & Gruß
    Chris

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.11.2004
    Beiträge
    451
    In deiner File1.c musst du noch deine File1.h einbinden

    Also auch noch mal ein #include <File1.h> an den Anfang

    in den header-Dateien kommt noch eine Abfrage ob sie bereits eingebunden wurde, weil sonst gibt es Probleme mit dem Compiler -> die Funktionen sind ja mehrfach vorhanden.

    In der Regel definiert man hierzu eine Konstante, die den Dateinamen. Gibt es sie bereits, ist der Code schon eingebunden. Sieht dann so aus:

    Code:
    #ifndef FILE1_H
    #define FILE1_H
    
    ... dein Code ...
    
    #endif
    
    Ansonsten sieht es gut aus. Zurnot auch mal nach "C header Dateien" googeln

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2008
    Ort
    Graz
    Beiträge
    500
    wenn File1funktion1 von main aus aufgerufen wird, muss in File1.h das so angegeben werden: "extern void File1funktion1(void);". Damit kann diese Funktion auch ausserhalb von File1.c verwendet werden.
    Variablen kommen ins *.c File. Ausnahme ist wenn die Variable von main auch in File1.c verwendet wird, dann aber in File1.h "extern int16_t Variable1;" Das ist die Info dass es die Variable schon gibt und global verwendet wird, ansonsten wird diese neu angelegt und ist unterschiedlich zu Variable1 von main.

    LG!
    alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Zitat Zitat von robin Beitrag anzeigen
    Also auch noch mal ein #include <File1.h> an den Anfang
    [/CODE]
    #include "File1.h"
    wenn File1funktion1 von main aus aufgerufen wird, muss in File1.h das so angegeben werden: "extern void File1funktion1(void);"
    Falsch!

    Das ist die Info dass es die Variable schon gibt und global verwendet wird, ansonsten wird diese neu angelegt und ist unterschiedlich zu Variable1 von main.
    Das würde gar nicht kompilieren, da der der Linker einen Fehler wegen 2 gleichen Variablen ausspuckt.

    mfg

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    Hi,

    danke für die ganzen Infos, ich denke, ich bekomms jetzt hin. Wenn nicht, melde ich mich nochmal.

    Gruß
    Chris

Ähnliche Themen

  1. [ERLEDIGT] RP6 und Atmel Studio 6 (wieder mal)
    Von basteluwe im Forum Robby RP6
    Antworten: 9
    Letzter Beitrag: 11.04.2014, 16:32
  2. Atmel AVR Studio 5.1 einrichten
    Von mikk_11 im Forum Robby RP6
    Antworten: 13
    Letzter Beitrag: 16.02.2013, 15:16
  3. RP6 und Atmel Studio 6.0
    Von bernd01 im Forum Robby RP6
    Antworten: 2
    Letzter Beitrag: 24.07.2012, 12:37
  4. Atmel Studio 6
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 4
    Letzter Beitrag: 14.03.2012, 18:23
  5. Verbindungsproblem: atmel mk2 + avr studio + rn control 1.4
    Von jokecookie im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 12.04.2010, 20:01

Berechtigungen

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