Posted on 2007-08-03 12:59
寶杉 閱讀(520)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
C++
在Visual C++中,可以在函數(shù)類型前加_cdecl,_stdcall或者_(dá)pascal來(lái)表示其調(diào)用規(guī)范(默認(rèn)為_cdecl)
// 被調(diào)用函數(shù)是以int為參數(shù),以int為返回值
__stdcall int callee(int);
// 調(diào)用函數(shù)以函數(shù)指針為參數(shù)
void caller( __cdecl int(*ptr)(int));
// 在p中企圖存儲(chǔ)被調(diào)用函數(shù)地址的非法操作
__cdecl int(*p)(int) = callee; // 出錯(cuò)
指針p和callee()的類型不兼容,因?yàn)樗鼈冇胁煌恼{(diào)用規(guī)范。因此不能將被調(diào)用者的地址賦值給指針p,盡管兩者有相同的返回值和參數(shù)列。