関数コールバックで動作するライブラリを作成して、同じ呼び出し規則と同じシグネチャを持つ型への関数ポインターを頻繁に型キャスト (および呼び出し) しましたが、1 つの例外があります: それらには異なる型 (すべてのデータ) を指すパラメーターがありました。または無効なポインター。
最近、これによると、それほど安全ではない可能性があることを発見しました: https://stackoverflow.com/a/14044244/3079266
基本的には、引数の型に互換性があるということは、関数ポインタの型にも互換性があるということであり、問題ないはずだということがわかりました。
さて、質問が3つあります。
最初:これは、異なる型へのポインターは技術的に互換性がないため、私がしていることは未定義の動作を引き起こす可能性があるということですか?
2番目:どこで(どのアーキテクチャで)それを回避できますか?その中に Windows x86 または x64 バージョンはありますか?
3番目:どこで逃げられないのですか?