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
__stdcalletc. Specifier sind Microsoft-spezifische Spracherweiterungen die ein anderer Compiler nicht notwendigerweise verstehen muss...
-
Es riecht ein wenig danach, als sei
__stdcallnicht 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.