Re: komplexes Problem mit Funktionszeigern



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
.



Relevant Pages

  • Re: Header Files and Interfaces Yet Again
    ... I get a foo.h user's header file ... Java's assignments are pointer assignments. ... If for some reason I'm forced to violate ...
    (comp.lang.cpp)
  • Re: Separated headers
    ... and now I want to separate headers from code. ... I guess I need one more pointer in the header like this: ... \>XXXX and XXXX> move to and from a specific data area, ...
    (comp.lang.forth)
  • Re: error 12115 and how to delete a smart blob
    ... An internal error probably occurred and corrupted the LO header. ... i found the line of my table where the corrupted blob is (the ... fail, same error. ... binary vi and/or whatever else to zero out the pointer completely. ...
    (comp.databases.informix)
  • Re: vwait doesnt return after setting TCL_SetVar from a thread
    ... data (TCL_interp pointer) this is your code: ... } EventData; ... The 'header' should not be a pointer. ...
    (comp.lang.tcl)
  • Re: komplexes Problem mit Funktionszeigern
    ... Es sind Header vorhanden, die auch die aufgerufenen Methoden deklarieren. ... was Du hier genau meinst. ... So unterschiedlich sind diese Konventionen offensichtlich nicht. ...
    (de.comp.lang.c)