Josef Spillner schrieb am Mittwoch, 1. Dezember 2004 19:15:
Am Mittwoch, 1. Dezember 2004 18:23 schrieb Falk Döring:
[falk@Voyager C]$ gcc -lreadline read.c /usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.2/../../../libreadline.so:
(...)
Was wollen mir diese Fehlermeldungen sagen? Muss ich noch weitere Bibliotheken beim compilieren mit angeben? Die Beispiele zu readline lassen sich erst recht nicht compilieren, können mir also auch nicht weiterhelfen. (readline.h ist in diesem Ordner zu finden!)
Die libreadline benötigt libncurses. Generell gilt, daß Bibliotheken die ihrerseits genutzten Bibliotheken mit verlinkt haben müssen, da man als Nutzer die Details nicht kennen müssen will. Das ist bei Debian auch der Fall, also wohl ein Mandrakefehler.
Ist nicht (nur) ein Mandrake-Fehler. Auch Slackware gibt diesen Fehler aus.
Frage 2: Wie bekomme ich bei Funktionen optionale Parameter (in C) hin?
Den Prototyp als foo() deklarieren ohne void dazwischen - dann ist laut C-Standard alles erlaubt. Wenn du aber im Stil von printf() variable Argumente möchtest, dann geht das über Ellipsen.
void foo(const char *fmt, ...) { va_list ap; va_start(ap, fmt); mache_was_mit_fmt_und_ap(); va_end(ap); }
Ich werde es ausprobieren.
Danke,
Falk