Forum: Mikrocontroller und Digitale Elektronik Linker Fehler CodeVision


von Greenhorn (Gast)


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

von Stefan (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.