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:
und "syscall.h":
, dann müsste "syscall.c" doch folgendermaßen aussehen:
aber der Compiler (Codeblocks, gcc) gibt mir folgende Fehlermeldung aus:
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
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:
C++:
#include "syscall.h"
#include "syscall.c"
C++:
#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*/
C++:
#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:
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 ===|
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
Zuletzt bearbeitet: