functon pointer und __stdcall
-
hi
was ist falsch an:
using funcpointer = auto (__stdcall*)(void) -> void;
der VC++ akzeptiert das mit warnstufe 4. der g++ hat ein problem damit:
error: invalid use of ‘auto’ 1> using funcpointer = auto (__stdcall*)(void) -> void;
so nimmt er es:
using funcpointer = void (*)(void);
Meep Meep
-
Die
__stdcall
etc. Specifier sind Microsoft-spezifische Spracherweiterungen die ein anderer Compiler nicht notwendigerweise verstehen muss...
-
Es riecht ein wenig danach, als sei
__stdcall
nicht definiert.
G++ verwendet für Aufrufkonventionen üblicherweise auch__attribute__
-Specifier, daher würde ich es mal so versuchen:using funcpointer = auto (__attribute__((stdcall))*)(void) -> void;
oder so:
#ifdef _MSC_VER #define MY_STDCALL __stdcall #else #define MY_STDCALL __attribute__((stdcall)) #endif using funcpointer = auto (MY_STDCALL*)(void) -> void;
Anmerkung: Mein lokaler G++ (7.1.0) hier unter Windows versteht allerdings von Haus aus
__stdcall
, ohne dass ich
irgendeinen Header eingebunden hätte. Möglicherweise wurde das irgendwann mal eingebaut.