Linker Fehler CodeVision

Gast #1506650
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
Gast
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:
1
extern datatype_process rf;
und dann in einem C-File:
1
datatype_process rf;

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.