PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : libraries / includes und und und



mithras
06-10-2002, 16:19
Hallo!
Habe bisher immer nur kleinere Projekte in C entwickelt, diese bestanden aus einer C Quell-Datei.
Habe mir einen kleinen mp3 Player aus dem Netz gesaugt (mp3player, nur 55K), aber selbst dieser besteht wie fast alle anderen Programme aus mehreren Datein. Sogar aus mehreren C Quelldateien.
So wird z.B. im Header einer Datei
#include "libmpg123.h
eingebunden
In einer anderen c Quelldatei wird #include "huffman.h"
eingebunden (natürlich neben den ganzen C Standard-Includes).
Und beim Kompelieren reicht nicht nur ein gcc sondern ich muss folgendes machen:

make lib
make
make install

Kann mir mal einer die ganzen Zusammenhänge zwischen libraries includes und was es da alles für Zeugs erklären?

thx;)

tuxipuxi
06-10-2002, 18:59
also ich kann nur versuchen das mit den mehreren .c und .h dateien zu erklaeren:
du hast deine maindatei. diese inkludiert bibliotheken,z.b. standardbibliotheken wie iostream.h oder vector.h usw.
wenn du eine headerdatei(so heissen die .h dateien) hast,die mit #include "name.h" inkludiert ist,ist es eine benutzerdefinierte headerdatei.

in so einer datei koennen zum beispiel namespace oder klassendeklarationen stehen.
beispiel(unrealistisch):
"
class c
{
public:
void f();
void g();
};
"

ist deine userdefined.h .
also in deiner main dann : "#include "userdefined.h" ... dann gehst du davon aus , das die headerdatei im gleichen verzeichnis liegt. sonst eben verzeichnis mit angeben.

die funktionen sind nur deklariert,koennen noch nix machen und muessen noch definiert werden.
das passiert in der gleichnamigen .cpp datei. (bei c-dateien eben .c).
da wuerde die definition z.b. so aussehen:
userdefined.cpp:
"
#include <iostream.h>
#include "userdefined.h"

void c::f()
{
//funktionsdeklaration
};
void c::g()
{
//wieder.
};
"

ja,
und wenn du dann in der main deine userdefined inkludierst,kannst du eben ganz normal die funktionen benutzen.

ich hoffe ich habe keinen quatsch erzaehlt(sonst wird anda skoa es schon sagen :)).

make und make install sind (weiss ich nicht so genau) installationsroutinen.
in dem makefile stehen die anweisungen drin wie kompiliert werden soll,wohin die dateien gehoeren usw.

lies dir am besten mal was drueber durch.

( www.onlinetutorials.de )

ciao lane

maceop
11-10-2002, 15:09
ich denke das mit den includes ist jetzt klar , oder ?
naja ganz kurz:

grundsätzlich ist #include ne Präprozessoranweisung (wie z.B. auch #define oder #ifdef....). zum einen kannst du die standard-headers in dein Programm "einbeziehen" / includen. Zu diesen Standard-Headers gehören:

assert.h
ctype.h
errno.h
float.h
limits.h
locale.h
math.h
setjmp.h
signal.h
stdarg.h
stddef.h
stdio.h
stdlib.h
string.h
time.h

Diese Includes benötigt jedes System ! Der sinn ist auch recht einfach. in den headers findest du wichtige FUnktionen (vordefiniert) wie z.B: strcpy in string.h

Um nun z.B. strcpy nutzen zu können, musst du u.a. string.h einbinden.
Nun kommt es ja auch schonmal vor das du eigene Headers schreibst, in denen du z.B. eigene Makros definierst, diese includest du dann mit "namedesheaders.h" . Der Unterschied zwischen <name.h> und "name.h" ist auch ganz einfach : wenn du <name.h> angibst wird im Standarddirectory nach dem Header name.h gesucht, gibst du allerdings "name.h" an, wird zuerst im aktuellen Verzeichnis gesucht dann erst im Standarddirectory.

Zu guter letzt hab ich noch nen kurzen Text über make gefunden , der sollte es eigentlich gut genug erklären:
http://www.3d-crew.com/unixtexte/make.htm

maceop