Am Sonntag, 10. Dezember 2000 13:58 schrieb Ulf Lorenz:
Ich bin mir ziemlich sicher, daß ich auch schon mal beim Borland C++-Builder einen Compiler-Fehler gehabt hab (ich kann es mir zumindest anders nicht erklären, daß sich das Programm nicht an meine Quelltextanweisungen hielt).
Das kann gut sein, Compilerfehler treten schon ab und zu mal auf. Manchmal beachtet man aber auch etwas nicht. Zum Beispiel bin ich mir bei dem folgenden Konstrukt nicht sicher:
/*Typdefinition*/ typedef enum {XENUM1, XENUM2} CustomType;
/*Deklaration*/ typedef void (*CustomCallback)(CustomType id); /*callback proto*/ int foo_add_callback(const CustomType id, const CustomCallback func); static void bar_funktion(CustomType id); /*user callback*/
/*Callback-Registrierung*/ foo_add_callback(XENUM1, bar_funktion);
...bringt, wenn man nicht "#define CustomType unsigned int" definiert, einen Fehler (wo auch immer der das hernimmt). Er meint, ich hätte static void bar_funktion(unsigned int id) deklariert.
Auch ärgerlich ist, daß der Qt-moc keine #ifdefs kennt, da muß man sich mitunter ganz schön verbiegen (class example : public MOCDUMMY).
Die Sache mit Access kann aber auch ganz woanders liegen, vielleicht ist in irgendeinem Zugriffsmodul die Speicherverwaltung nicht in Ordung. Ein free() in einer asynchron laufenden Umgebung hat schon so manchen um seine Freizeit gebracht :-) (da ist das end-of-table eventuell NULL, während die andere Variable den Wert gesichert hat (oder war das nur ein Pointer darauf?)) Wenn das Problem nur sporadisch auftritt, kann es auch mit der Linux-Speicherseitengröße (?) (irgendwas mit 4kB) zusammenhängen, das hatte ich auch schonmal. Hmm... die Lösung ist aber sicher einfacher.
Josef Spillner