mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Linker Fehler CodeVision


Autor: Greenhorn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag,

ich habe eine hoffentlich einfache Frage. Ich definiere in der Header 
Datei (nachstehend) eine globale Variable.

Header:

/*********************************************************************** 
***************************************
                    Function:
                    Input Parameter:
                    Output Parameter:
                    Description:
************************************************************************ 
**************************************/
typedef struct
    {
    unsigned task_0:1;
    unsigned task_1:1;
    unsigned task_2:1;
    unsigned task_3:1;
    unsigned task_4:1;
    unsigned task_5:1;
    unsigned task_6:1;
    unsigned task_7:1;
    }datatype_task;

typedef union
    {
    unsigned char   process_all;
    datatype_task   process_sgl;
    }datatype_process;


datatype_process rf;


Und rufe die Variable in der Main-Funktion wieder auf. Doch leider zeigt 
er mir eine Linker Error:"Linker error: C:\Dokumente und 
Einstellungen\MM\Desktop\Mikrocontroller\Atmel\Funkmodul 
RFM12B\Funkmodul-Main-File.h(26): entry 'rf' from file: C:\Dokumente und 
Einstellungen\MM\Desktop\Mikrocontroller\Atmel\Funkmodul 
RFM12B\Funkmodul-Main-File.h, line: 26 is redefined"



Main:
/*********************************************************************** 
***************************************
                    Function:
                    Input Parameter:
                    Output Parameter:
                    Description:
************************************************************************ 
**************************************/
#include "C:\Dokumente und 
Einstellungen\MM\Desktop\Mikrocontroller\Atmel\Funkmodul 
RFM12B\Funkmodul-Main-File.h"
//#include "C:\Dokumente und 
Einstellungen\MM\Desktop\Mikrocontroller\Atmel\Funkmodul 
RFM12B\Funkmodul-USB-File.h"
//#include "C:\Dokumente und 
Einstellungen\MM\Desktop\Mikrocontroller\Atmel\Funkmodul 
RFM12B\Funkmodul-RFM-File.h"
/*********************************************************************** 
***************************************
                    Function:           Definition of Globale Variables
                    Input Parameter:
                    Output Parameter:
                    Description:
************************************************************************ 
**************************************/


/*********************************************************************** 
***************************************
                    Function:
                    Input Parameter:
                    Output Parameter:
                    Description:
************************************************************************ 
**************************************/
void main(void)
    {
    /*Initial Peripheral Functions:*/
        /*USB-Interface:*/
        //init_usb();
        /*RFM12B Communication:*/
    while(1)
        {
        if(rf.process_all==0)
            {
            }
        if(rf.process_sgl.task_0==1)
            {
            }
        if(rf.process_sgl.task_1==1)
            {
            }
        if(rf.process_sgl.task_2==1)
            {
            }
        }
    }


Kann mir jemand diesen Fehler erklären. Danke

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bindest du das Headerfile in mehreren Dateien ein?
Variablen werden eigentlich nicht in Header-, sondern in Source Dateien 
definiert. Im Header steht nur eine Deklaration:
extern datatype_process rf;
und dann in einem C-File:
datatype_process rf;

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.