Re: komplexes Problem mit Funktionszeigern
- From: Claus Reibenstein <4spamersonly@xxxxxxxxx>
- Date: Tue, 19 May 2009 16:41:43 +0200
M. Mertens schrieb:
Claus Reibenstein schrieb:
Du sollst keine Header ändern, sondern passende Header bereitstellen.
Es sind Header vorhanden, die auch die aufgerufenen Methoden
deklarieren. Allerdings in dem Fall, um den es geht, werden diese
Methoden über entsprechende Methodenpointer aufgerufen. Mir ist einfach
nicht klar, was Du hier genau meinst. Wie können mir an dieser Stelle
Header helfen?
Du meinst also, wenn Du die Funktion direkt aufrufst, klappt's, und wenn
Du sie über einen Pointer aufrufst, klappt's nicht?
Es macht keinen Unterschied, ob eine Funktion direkt oder über einen
Pointer aufgerufen wird. Wenn es einen macht, hast Du einen Fehler in
Deinem Programm. Vermutlich stimmt die Deklaration des Pointers nicht.
Poste doch mal ein Codebeispiel, welches den Fehler verursacht.
Du verwendest verschiedene Compiler (wobei ich nicht verstehe, welcher
Sinn dahinter steckt)
Naja.. ungefähr der gleiche Sinn, der hinter
> Myriaden von nur im Binärformat erhältlichen Programmbibliotheken
auch steckt.
Ich kann Dir nicht ganz folgen.
und verschiedene Compiler haben u.U.
unterschiedliche Aufrufkonventionen und unterschiedliche
Datendarstellungen.
So unterschiedlich sind diese Konventionen offensichtlich nicht. Und
wenn ich die weiteren Beiträge richtig verstanden habe, sind die
Konventionen für Basisdatentypen sogar flächendeckend gleich.
Das ist reiner Zufall, dass Deine diversen Compiler die gleichen
Konventionen benutzen. Darauf verlassen solltest Du Dich aber nicht.
Einfacher wäre es natürlich, wenn Du immer den gleichen Compiler mit den
gleichen Einstellungen verwenden würdest. Dann hättest Du solche
Probleme erst gar nicht.
Selbstverständlich. Aber die Möglichkeit scheidet leider aus. Problem
ist, dass die Anwendungs-Bibliotheken teilweise nur mit einem bestimmten
Compiler zu erstellen sind, z.B. weil sie proprietäre Schnittstellen zu
bestimmter Hardware besitzen.
Dann solltest Du dafür sorgen, dass diese Module eine wohl definierte
Schnittstelle besitzen, und für diese Schnittstelle passende Header
bereitstellen.
Genau dafür erscheint ja die Einbindung
über DLLs/SOs so sinnvoll, jedoch war mir eben nicht klar, dass es auf
der Ebene von Funktionsaufrufen über Pointer noch solchen
Interpretationsspielraum gibt.
Nochmal: Ob eine Funktion direkt oder über einen Pointer aufgerufen
wird, macht keinen Unterschied. Wenn es einen macht, stimmt
wahrscheinlich mit der Deklaration des Pointers etwas nicht.
Das alles hat aber nichts mehr mit der Sprache C zu tun.
Nein, aber mit der Interpretation der Sprache C.
Auch nicht. Es hat mit der Implementation der Sprache zu tun.
Gruß. Claus
.
- References:
- komplexes Problem mit Funktionszeigern
- From: M. Mertens
- Re: komplexes Problem mit Funktionszeigern
- From: Jan Seiffert
- Re: komplexes Problem mit Funktionszeigern
- From: M. Mertens
- Re: komplexes Problem mit Funktionszeigern
- From: Claus Reibenstein
- Re: komplexes Problem mit Funktionszeigern
- From: M. Mertens
- Re: komplexes Problem mit Funktionszeigern
- From: Claus Reibenstein
- Re: komplexes Problem mit Funktionszeigern
- From: M. Mertens
- Re: komplexes Problem mit Funktionszeigern
- From: Claus Reibenstein
- Re: komplexes Problem mit Funktionszeigern
- From: M. Mertens
- komplexes Problem mit Funktionszeigern
- Prev by Date: Re: komplexes Problem mit Funktionszeigern
- Next by Date: Re: komplexes Problem mit Funktionszeigern
- Previous by thread: Re: komplexes Problem mit Funktionszeigern
- Next by thread: Re: komplexes Problem mit Funktionszeigern
- Index(es):
Relevant Pages
|