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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.