Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Seltsame Warnung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.05.2006, 14:56 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Code:
warning: ISO C++ forbids casting between pointer-to-function and pointer-to-object



Was bedeutet das nun?

Zeile ist z.b:


C++:
typedef void (*PDRIVER_INITIALIZE)(int);
PDRIVER_INITIALIZE driver_Initialize;

driver_Initialize = (PDRIVER_INITIALIZE)dlsym(so_handle, "driver_Initialize"); // <-- hier kommt die warnung



Wie kann ich die warnung oben vermeiden bzw verhindern?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.05.2006, 15:04 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


hmm gehört bei dem Funktionspointer nicht noch eine Aufrufkonvention in die Definition?

Also ich weiß nicht wie die unter Linux aussehen, aber sowas wie _stdcall oder so...

Dieser Post wurde am 10.05.2006 um 15:04 Uhr von Guybrush Threepwood editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.05.2006, 21:11 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hmm naja aber erzeugt das die warnung?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.05.2006, 21:57 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


weiß nicht aber Anhand der Warnung würde ich vermuten das der Compiler den Zeiger nicht als Funktionszeiger erkennt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.05.2006, 22:00 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja wieso? er sagt doch

"between pointer-to-function und pointer-to-object"

also zwischen p. a. funktion und p. a. objekt die Funktion liefert ja ein void* (also objekt?????) und der funktionspointer ist eben ein funktionspointer.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.05.2006, 16:11 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ich hätte das jetzt so verstanden das dlsym einen Funktionspointer zurückliefert, der Compiler PDRIVER_INITIALIZE aber als Objectpointer ansieht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.05.2006, 16:40 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


in der anleitung die ich 2 - 3 threads tiefer gepostet hab stehts auch im grunde nicht anders, naja ok es steht nicht als typedef. Ich probiers mal aus...

ne daran liegts auch nicht, kommt trotzdem
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.05.2006, 12:25 Uhr
0xdeadbeef
Gott
(Operator)


Die Syntax ist da, zugegeben, etwas widerlich - der Hintergrund ist, void* nach Funktionspointer zu casten geht nicht so ohne weiteres, dagegen Funktionspointer nach void* geht. Also:

C++:
dlerror();
*(void**) (&driver_Initialize) = dlsym(so_handle, "driver_Initialize");
if ((error = dlerror()) != NULL)  {
  std::cerr << error << std::endl;
  throw stuff();
}


Der dlerror-Kram davor und danach ist dabei für die Fehlerbehandlung.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 12.05.2006 um 12:26 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
12.05.2006, 21:43 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hmm mal schaun ob der das unter windows dann so konvertiert auch schluckt (ist platform unabhängiger code, dlsym usw kann man ja 1 zu 1 mit LoadLibrary und Co umsetzen)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: