ここで言及されているようなコードを見ていました: winapi 関数の関数ポインター (stdcall/cdecl)、関数ポインターと呼び出し規約など。
関数ポインタの呼び出し型を として宣言する必要性、利点は何__stdcall
ですか?
関数ポインタの呼び出し型を宣言するのはなぜですか?
ここで言及されているようなコードを見ていました: winapi 関数の関数ポインター (stdcall/cdecl)、関数ポインターと呼び出し規約など。
関数ポインタの呼び出し型を として宣言する必要性、利点は何__stdcall
ですか?
関数ポインタの呼び出し型を宣言するのはなぜですか?
関数ポインターに呼び出し規則指定子を埋め込むと、そのポインターを介して関数を呼び出すときに、その呼び出し規則を使用できます。__stdcallは、Win32 API 関数を呼び出すために使用される呼び出し規約です。
関数ポインターで指定する利点は、コードのニーズに応じて異なる呼び出し規則に一致させることができることです (たとえば、外部ライブラリの関数を遅延バインディング経由でロードする場合)。ライブラリ ヘッダーは、優れたプログラミング プラクティスとしてそれらを指定する必要があります。
ただし、注意点があります。関数ポインターに間違った呼び出し規則を埋め込むと、コンパイラーはそれを検出するのに無力であり、実行時に悪いことをすることになる可能性があります。