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.