-
        

Ergebnis 1 bis 5 von 5

Thema: Problem mit EXTERN in Headerdatei

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1

    Problem mit EXTERN in Headerdatei

    Anzeige

    Hallo Freunde von C/C++ !
    Ich habe da mal ein Problem mit einer Deklarierung in einer Headerdatei. Ich könnte die Deklarierung ja in der Main machen, aber da ich mehrere Projekte mit Datenausgaben über USART, also seriele Übertragung habe, möchte ich eine H-Datei nutzen...
    zum Thema: ich habe in mehreren Projekten Daten zu übertragen die seriel an Anzeigen,LCD's, Funkmodulen u.ä. gehen, darum auch Arbeiten mit eigener Headerdatei.

    ich habe in der h-datei eine Variabe unint16_t so deklariert :
    Code:
    ol_usart.h
    ...
    ...
    extern uint16_t  data ;
    ....
    ...
    Ich binde die "ol_usart.h" als include Datei in die Main ein, trotzdem meckert der Compiler über diese variable data. Nur wenn ich data in der main deklariere klappt die Compilierung mit AVR-Studio.
    Die in der Header auch mit "extern" deklarierten Funktionen werden makellos eingebunden und compiliert....
    Leider geht auch die Literatur zu C /C++ kaum auf die Headerdateien ein, jedenfalls die Grundkursbücher. Na ja werde nochmal die dicke über 1000 seitige "C-Bibel" durchblättern müssen , vielleicht finde ich was, aber vieleicht weiss ein anderer von hier des Rätsels Lösung, da dank ich schon mal für die Unterstützung

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Wo ist denn data deklariert? Mit "extern uint16_t data;" wird der Compiler ja nur darauf hingewiesen, dass data WOANDERS (mit "uint16_t data") deklariert ist.
    Gruß
    Dirk

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Kandel
    Alter
    29
    Beiträge
    1.220
    Hallo Gerhard,

    wie Dirk geschrieben hat: "extern" sagt dem Compiler: "Es gibt irgendwo anders eine entsprechende Variablendefinition". Wobei "irgendwo" in dem Kontext letztendlich eine C-Datei sein muss. Letztendlich, weil die entsprechende Quelltextzeile auch in einem via #include eingebundenen Header stehen könnte, in der Regel ist das aber nicht gewollt.

    Das ist übrigens der Unterschied zwischen Deklaration ("Es gibt ...") und Definition ("Hier gibt es ..."), eine beliebte Ursache für Verwirrungen. Erst bei der Definition reserviert der Compiler Platz für die Variable, Deklarationen sind erst Mal nur Namen die später in die Speicherstelle umgesetzt werden. Und mit "extern" erfolgt eine solche Deklaration.

    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    habt vielen Dank Ihr beide ! Ja da habe ich noch Nachholebedarf , trotz etwas C Ausbildung (Shitt Unfall). Kann auch sein das ich da was mit Pascal(Delphi) verwechsle, was für mich bis vor gut 2 Jahren die Programmiersprache eigentlich war. Aber man kann ja halt mal hier nachlesen und auch fragen, denn Keiner ist ja vollkommen...

    Danke

    Gerhard

    PS : ich muss zugestehen, dass ich nach einem Beispiel ind einem Fachbuch gearbeitet habe, also kann man diesen auch nicht "blind" verstehen.
    Nun werde ich das dicke DataBeckerBuch "Das Grundlagenbuch, C++" durchackern mal sehen ob das besser ist..
    Geändert von oderlachs (23.12.2012 um 12:31 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.556
    ... dass ich nach einem Beispiel ind einem Fachbuch gearbeitet habe ...
    Manchmal ist das Forum besser *ggg*. Das Thema Deklaration und Definition z.B. hat Stefan hier (klick) gut erklärt - auch weiter oben in demselben Thread. Danach habs sogar ich kapiert.

    Gehard - und alle - schöne Weihnachten, feiert schön und friedlich - und alles Gute.
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. gcc/as - problem: relocation truncated bei .extern
    Von RedEagle im Forum Assembler-Programmierung
    Antworten: 0
    Letzter Beitrag: 01.12.2010, 09:15
  2. Anfängerfrage WinAVR. Wo hin mit der Headerdatei?
    Von Sergetg im Forum C - Programmierung (GCC u.a.)
    Antworten: 12
    Letzter Beitrag: 05.02.2010, 17:41
  3. STK500 ISP10PIN, extern Schaltung;Verbindungsaufbau problem
    Von Schottky im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 23.05.2009, 23:55
  4. Problem mit extern deklarierten Funktionen (winavr)
    Von omniwheel im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 23.05.2007, 13:05
  5. PIC16F88 RC-EXTERN Oszillator Problem
    Von weberre im Forum PIC Controller
    Antworten: 1
    Letzter Beitrag: 23.05.2006, 07:34

Berechtigungen

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