tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von einfach nur crack
  • 1 Beitrag von sheel
  • 1 Beitrag von sheel
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
385
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Clund Clund ist offline (aka Cpp-Freak)
    Registriert seit
    Mar 2010
    Ort
    Neuburg a. D.(Bayern)
    Beiträge
    98
    Sooo, hallo zusammen,
    ich bin gerade dabei ein eigenes "iostream" für mein eigenes System zu Programmieren (siehe Anhang).
    Aber wie definiert man Funktionen, die nicht inline sind? (in meinem Fall soll imks-libs.c einfach in mein "main.c" vom Kernel eingebunden werden) Wenn ich jetzt z.B. meine Hauptdatei "imks-libs.c" habe:
    Code cpp:
    1
    2
    
    #include "syscall.h"
    #include "syscall.c"
    und "syscall.h":
    Code cpp:
    1
    2
    3
    4
    
    #ifndef SYSCALL_H_INCLDED
    #define SYSCALL_H_INCLDED
    int syscall_al_ah_bx_cx_dx(_bit8 numbera/*al*/, _bit8 nummerb /*ah*/, _bit16 bx, _bit16 cx, _bit16 dx);
    #endif /*syscall-h-included*/
    , dann müsste "syscall.c" doch folgendermaßen aussehen:
    Code cpp:
    1
    2
    3
    4
    5
    6
    
    #include "syscall.h"
     
    int syscall_al_ah_bx_cx_dx(_bit8 numbera/*al*/, _bit8 nummerb /*ah*/, _bit16 bx, _bit16 cx, _bit16 dx)
    {
        return 0; //0=no_problem
    };

    aber der Compiler (Codeblocks, gcc) gibt mir folgende Fehlermeldung aus:
    Code :
    1
    2
    3
    4
    5
    6
    
    obj/Debug/syscall.o||In function `syscall_al_ah_bx_cx_dx':|
    /media/SIMONDZ/JuFo/imks-libs-dev/imks-libs-dev/syscall.c|5|multiple definition of `syscall_al_ah_bx_cx_dx'|
    obj/Debug/imks-libs.o:/media/SIMONDZ/JuFo/imks-libs-dev/imks-libs-dev/syscall.c|5|first defined here|
    /usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../x86_64-linux-gnu/crt1.o||In function `_start':|
    (.text+0x20)||undefined reference to `main'| <--das hier kommt daher, dass ich kein main() habe und ist mehr oder weniger gewollt
    ||=== Build finished: 3 errors, 0 warnings ===|
    wenn ich "syscall.c" nicht in "imks-libs.c" einbinde kommen die Fehlermeldungen nicht, ebenso, wenn ich "syscall.c" ganz weglasse und die Funktion in die Header-Datei ganz reinschreibe.
    Beim Googlen bin ich auf irgendwas mit Bibliotheken gestoßen (heißt das jetzt ich brauche Bibliotheken?), hab es aber nicht ganz verstanden (auf Englisch).
    wie bekomme ich es also richtg hin, dass die Funktionen kein Inline sind?
    Mfg
    Clund

    P.S. wenn mir jemand nicht folgen kann, dann möge er sich melden und ich beschreibe mein Problem noch ausführlicher
    Geändert von Clund (11.02.12 um 12:41 Uhr) Grund: "cpp"-Codetags
     
    Früherer Name: Cpp-Freak
    Bildung ist, was übrig bleibt, wenn man alles vergessen hat, was man in der Schule gelernt hat
    -Albert Eistein
    Wirklich, ich habe nicht vor Microsoft zu zerstören. Das wird nur ein ziemlich unbeachteter Nebeneffekt sein
    -Linus Torvalds
    Die meisten Computerpobleme sitzen zwischen Tastatur und Stuhl

    Google ist dein Freund

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi

    warum inkludierst du die c-Datei?
    Du schreibst ja selber, ohne diesem Include funktionierts.
    Zum Inkludieren sind nur die h-Dateien.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    Clund Clund ist offline (aka Cpp-Freak)
    Registriert seit
    Mar 2010
    Ort
    Neuburg a. D.(Bayern)
    Beiträge
    98
    aber wenn die c Dateien nicht includiert werden, dann bringen sie doch nix
    oder habe ich da was falsch verstanden?
    Clund
     

  4. #4
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.956
    Wenn du Dateien kompilierst, dann gibst du doch an, auf welche Dateien er zurückgreifen muss:
    Code :
    1
    
    gcc -o {Name der Binärdatei} {Datei 1.c} {Datei 2.c} {...}
    Clund bedankt sich. 
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  5. #5
    Clund Clund ist offline (aka Cpp-Freak)
    Registriert seit
    Mar 2010
    Ort
    Neuburg a. D.(Bayern)
    Beiträge
    98
    Moin,
    ich verwende Codeblocks und die ganzen files sollen dann in /usr/include/imks-libs-dev/ ligen. "imks-libs.c" soll dann von den Normalen Projekten (wie iostream) eingebunden werden (dafür habe ich auch schon makefile, etc wo ich deinen speziellen Befehl verwenden kann)
    kann man alle *.c Dateien in eine zusammenfassen, und diese dann gcc übergeben?
    Clund
     

  6. #6
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Kann man. Aber wozu dann überhaupt noch h-Dateien?
    Und die Übersichtlichkeit wird darunter sehr leiden...

    Zum "Falsch verstanden"-Post: Vermutlich.
    Du musst wirklich nur die h-Dateien inkludieren.
    Die c-Dateien werden alle einzeln kompiliert und dann zusammengelinkt.
    Clund bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  7. #7
    Clund Clund ist offline (aka Cpp-Freak)
    Registriert seit
    Mar 2010
    Ort
    Neuburg a. D.(Bayern)
    Beiträge
    98
    also im großen und ganzen habe ich dann 1 Datei die ich includiere (imks-libs.c)
    und noch ne Datei, in der alle .c Dateien includiert sind, die ich dem Compiler übergebe, oder?
    soll ich imks-libs.c dann besser in imks-libs.h umbenennen und imks-libs.c (wo alle .c eingebunden sind) dem Compiler übergeben?
    Edit: in den .h Dateien sind wichtige structs drinne
    Edit, die zweite: ich kann trotzdem (wegen den structs) noch die .h Dateien in die .c Dateien includieren, oder?
     

  8. #8
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Nein, keine C-Dateien includieren. Auch nicht in h umbenennen.

    Warum willst du nicht einfach mehrere c-Dateien beim kompilieren angeben,
    so wie crack gezeigt hat?
    Clund bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  9. #9
    Clund Clund ist offline (aka Cpp-Freak)
    Registriert seit
    Mar 2010
    Ort
    Neuburg a. D.(Bayern)
    Beiträge
    98
    ja, ok mach ich, es können nur endlos viele werden....
    (erstmal erledigt)

    Clund
    Geändert von Clund (11.02.12 um 18:33 Uhr)
     
    Früherer Name: Cpp-Freak
    Bildung ist, was übrig bleibt, wenn man alles vergessen hat, was man in der Schule gelernt hat
    -Albert Eistein
    Wirklich, ich habe nicht vor Microsoft zu zerstören. Das wird nur ein ziemlich unbeachteter Nebeneffekt sein
    -Linus Torvalds
    Die meisten Computerpobleme sitzen zwischen Tastatur und Stuhl

    Google ist dein Freund

Ähnliche Themen

  1. span-container nicht inline projeziert
    Von Snowat2011 im Forum CSS
    Antworten: 4
    Letzter Beitrag: 23.07.08, 10:43
  2. VBA Source aus Excel in Datei speichern
    Von KINK_LEO_III im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 14.06.07, 16:39
  3. Antworten: 3
    Letzter Beitrag: 10.10.05, 08:04
  4. Antworten: 2
    Letzter Beitrag: 08.03.05, 20:16
  5. Fragen zu nem Page-Header
    Von Marvin im Forum Photoshop
    Antworten: 36
    Letzter Beitrag: 11.05.02, 14:22

Stichworte