2012-03-07 4 views
1

MFC VC++では、CALLBACK手順を使用してsetTimer機能が設定されます。 linkから私はCALLBACKまたはWINAPIまたはPASCAL(MFC内)の関数の前には、読み込み専用の関数が必要ですか?

__stdcallとマークされている関数は(変数の引数を取り、いくつかの を除く)すべてのWin32 API関数は、それを使用しているため、そのように命名 呼び出し規約の標準を使用することをお読みください。

そして、これは私が理解していることです。すべてのVC++ MFC関数は、呼び出し元の変換として__stdcallを使用します。

そしてCALLBACK次のように私は読んだことが何

#define CALLBACK __stdcall 

....定義されていますCALLBACKと機能を先行 は、特定の機能のような(必要に応じて自動的に呼び出されることを強調するために使用されますこのsetTimerケースやJavaScriptでonClick場合)には、

私の疑問は、++ MFC VCでは、いくつかのを除くすべての機能(です)は、デフォルトの呼び出し規約__stdcallを持っています。したがって、CALLBACKまたはWINAPIまたはPASCALの関数の前にあるかどうかは同じ効果がありますか?

答えて

0

コンピュータには絶対に必要ですか?それは文脈によって異なります。 When you mismatch the calling conventionの場合、スタック上のデータ型がAPIの要件に一致するため、またはコードがrun on a different architecture like x64でいつもクラッシュする可能性があるため、ラッキーになる可能性があります。

メンテナンスプログラマーにとっては絶対に必要ですか?はい、そうです。あなたは、あなたの非標準的な慣習と巧妙な「最適化」を理解しなければならない貧しい人です。ある日、その貧しい人があなたかもしれません。

The compiler was yelling at you for a reason APIを無効にしようとしたとき。

関連する問題