Compilieren will nicht



  • #include "elem.h" am Anfang der liste.c einfügen

    BTW viel Glück, wenn du versuchst einen zu finden, der das für dich testet. Ich hab keine Lust dazu.



  • liste1.c C:\Dokumente und Einstellungen\Oliver Mladenovic\Desktop\liste1.o(.data+0x0)
    multiple definition of `ende'

    da kommen lauter so sachen nach dem ich da die libs eingesetzt habe



  • ELEMENT *ende = NULL;
     ELEMENT *anfang=NULL;
    

    Das ist eine Definition, die gehört da nicht hin. Das steht dann in beiden .c Dateien drin.

    So muss das in elem.h stehen:

    ELEMENT *ende;
     ELEMENT *anfang;
    

    Und so wie oben in der list1.c



  • CarstenJ schrieb:

    So muss das in elem.h stehen:

    ELEMENT *ende;
     ELEMENT *anfang;
    

    Das sind immer noch Definitionen. Schreib in beide Zeilen noch jeweils ein "extern", um reine Deklarationen daraus zu machen.



  • Ok Danke erstmal! ICh habe das so gemacht das ich die elem.h so verbessert habe:

    ELEMENT *anfang;
    ELEMENT *ende;

    und ganz am anfang in der liste1.c habe ich dann die Definition eingesetzt. Jetzt kopiliert er es aber wenn ich das Programm starte frist es den ganzen speicher auf 99 % Systemauslastung und ich sehe keine console wie es normaler weise ist.

    Wie soll ich das mit extern machen?



  • Hat Bashar doch schon geschrieben. Wie du siehst keine Console? Was siehst du denn?



  • ich sehe alles so als ob ich nichts gestartet habe, wie soll ich das den mit extern machen etwa: extern ELEMENT *anfang; ?



  • Ja, genau so. Also bei mir läuft das Programm und ich benutze auch den Dev-Cpp.



  • Kansst du den Code mal Posten? Ich kriege es einfach nicht hin , hast du auch bei der liste1.c diese libs eingestzt?
    #include "elem.h"
    #include <stdio.h>
    #include <stdlib.h>



  • Sag mir wenigstens was du alles gemacht hast... angefangen bei dem Quellcode oben.



  • listmain.c

    #include <stdio.h> 
    #include <stdlib.h> 
    #include <string.h> 
    #include <math.h> 
    #include "elem.h"
    
    int main(int argc,char *argr[]) 
    { 
    ...
    

    elem.h

    #ifndef ELEM_H
    #define ELEM_H
    typedef struct element 
    { 
      double zahl; 
      struct element *next; 
    }ELEMENT; 
    
    extern ELEMENT *ende;
    extern ELEMENT *anfang;
    
    extern ELEMENT *create_list_element(ELEMENT *ptr); 
    extern void add_element_after (double wert); 
    extern void add_element_before (double wert); 
    extern void forward(ELEMENT *aktuelles); 
    extern void backward(ELEMENT *aktuelles); 
    #endif
    

    liste1.c

    #include <stdio.h>
    #include "elem.h"
    
    ELEMENT *ende=NULL;
    ELEMENT *anfang=NULL;
    
    ELEMENT *create_list_element(ELEMENT *ptr) 
    ...
    

    So siehts aus, und es läuft.


Anmelden zum Antworten