Retourner au contenu associé (journal : Conversion entre pointeurs de fonctions incompatibles)
Posté par Gof (site web personnel) le 07 novembre 2018 à 17:19. En réponse au journal Conversion entre pointeurs de fonctions incompatibles. Évalué à 2. Dernière modification le 07 novembre 2018 à 17:20.
Oui, ça peut aussi changer la convention d'appel en principe. (Bien que sur toute les architecture que je connaisse, c'est la même en C et en C++)
Cf §5.2.2 [expr.call] http://eel.is/c++draft/expr.call
Calling a function through an expression whose function type is different from the function type of the called function's definition results in undefined behavior.
https://docs.oracle.com/cd/E19059-01/wrkshp50/805-4956/bajdcjch/index.html
En particulier, ça veux aussi dire que si on a une ça:
extern "C" void c_function_with_callback(void (*f)(int)); int foo() { // Undefined behavior: le lambda a un linkage C++ c_function_with_callback([](int x) { std::cout << x; } ); }
https://stackoverflow.com/questions/7301543/can-a-lambda-have-extern-c-linkage
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: extern "C", pointer to member function,
Posté par Gof (site web personnel) . En réponse au journal Conversion entre pointeurs de fonctions incompatibles. Évalué à 2. Dernière modification le 07 novembre 2018 à 17:20.
Oui, ça peut aussi changer la convention d'appel en principe.
(Bien que sur toute les architecture que je connaisse, c'est la même en C et en C++)
Cf §5.2.2 [expr.call] http://eel.is/c++draft/expr.call
https://docs.oracle.com/cd/E19059-01/wrkshp50/805-4956/bajdcjch/index.html
En particulier, ça veux aussi dire que si on a une ça:
https://stackoverflow.com/questions/7301543/can-a-lambda-have-extern-c-linkage