2010-11-27 16 views
1

私は関数の2つの例を与えようとするとCALLBACKと通常の関数を使用しています。
注:これらの例は書きませんでした。コールバック関数と正規関数の違いは何ですか?

通常の関数の違いは何ですか_stdcall

int __stdcall sumExample (int a, int b); 

を使用して

int sumExample (int a, int b) 
{ 
    return a + b; 
} 
int main() 
{ 
    int = sumExample(1, 3); 
    cout >> int; 
    return 0; 
} 

機能?
注:コーリング規約がどのように機能するかわからないので、例が役立ちます。

答えて

2

基本的に、呼び出し規約では、関数の呼び出し方法の実装の詳細を指定します。ほとんどのライブラリは標準Cの呼び出し規約(__cdecl)を使用しています。しかし、WinAPIは__stdcallを期待しています。呼び出し規則については、暗黙的にvoid(__cdecl *)(int, int)であるvoid(*)(int, int)void(__stdcall *)(int, int)に変換することはできず、デフォルト値は__cdeclであるなど、一致する必要があるという2つのことが必要です。 CALLBACKはWinAPIの#defineであり、望むならば変更することができます。

+0

さて、CALLBACKはすべてのプログラムを破壊するので変更できませんが、#ifdefは他のプラットフォーム(Alpha、MIPSなど)で何か他のものを意味するものです。 –

2

"コールバック"とは、ある関数が他の関数に渡されるときに渡される名前です。しかし、通常の関数としても使用することはできません。

+0

なぜdownvoteですか?同意する。 –

関連する問題