remotecontrol Posted August 23, 2019 at 07:43 PM Share Posted August 23, 2019 at 07:43 PM Hallo TF Team, die letzte Änderung der C API verursacht Umstellungsaufwand, das ging aus den Veröffentlichungen so nicht hervor. Vorher sah mein Code z.B. so aus: temperature_ir_register_callback(getDevice(), TEMPERATURE_IR_CALLBACK_OBJECT_TEMPERATURE, (void*) callback_int16, this); Und jetzt muss ich wohl schreiben: typedef void (*AnyCallbackFunc) (void); temperature_ir_register_callback(getDevice(), TEMPERATURE_IR_CALLBACK_OBJECT_TEMPERATURE, (AnyCallbackFunc) callback_int16, this); Jetzt wird zwar ein Funktionspointer übergeben, aber die Anzahl Argumente der Callback-Funktion ist in der Signatur der "register" Funktionen noch 0, d.h. ich caste dann doch wieder alles weg, was relevant ist, sonst beschwert sich der Compiler. Einen static_cast kann ich dafür auch nicht nutzen, also nach wie vor ein harter Cast. Mit einem Typedef ist das zwar eine triviale Anpassung, aber die Menge machts - eben alle Stellen wo ein Callback benutzt wird müssen geändert werden ... Quote Link to comment Share on other sites More sharing options...
photron Posted August 26, 2019 at 12:05 PM Share Posted August 26, 2019 at 12:05 PM Hast recht, ich habe das Changelog mal angepasst. Hier ging es darum die Verwendung von Object Pointern für das Übergeben/Speichern von Function Pointern abzustellen. Da in C den korrekten Type für alle möglichen Callbacks zu erwarten ist nicht möglich, da C keine Überladung kann. Das könnte man nur in reinen C++ Bindings lösen. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.