remotecontrol Geschrieben August 23, 2019 at 19:43 Share Geschrieben August 23, 2019 at 19:43 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 ... Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
photron Geschrieben August 26, 2019 at 12:05 Share Geschrieben August 26, 2019 at 12:05 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. Zitieren Link zu diesem Kommentar 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.