Jump to content

Recommended Posts

Posted

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 ...

Posted

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.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...