c 之函式原型

2022-09-06 00:03:14 字數 752 閱讀 1153

函式原型:

[作用域] [函式連線規範] 返回值型別 [函式呼叫規範] 函式名 (型別1[形參1]...);

函式定義:

[函式連線規範] 返回值型別 [函式呼叫規範] 函式名 (形參列表)

介面函式一定要指定呼叫規範,若不指定(使用預設),當別人宣告該介面時與預設的呼叫規範不一致(函式原型與實現的排程規範不一致)時,將發生編譯連線錯誤,或執行時崩潰。

_cdecl   : c/c++預設規範,從右向左壓參,能用於可變引數,呼叫函式負責堆疊清理。

_stdcall  : win api呼叫規範,從右向左壓參,被調函式負責堆疊清理,若函式為變參時,會自動轉換為_cdecl。

_thiscall : c++非靜態成員函式呼叫預設規範,不可變參,呼叫時,this指標儲存到ecx暫存器。其它與_stdcall一致。

_fastcall : 實參全放到暫存器中,所以很快,不能用於成員函式,被調函式負責清理堆疊。

主要影響名字的改編方案。

多語言開發時,要統一函式、變數、資料型別、常量等的連線規範。

常用的規範是 extern "c" . c++中呼叫c編譯函式時,通常要使用此連線。應為c++比c多了過載函式的能力,為了區別過載函式,在c++編譯器改編過載函式名稱時與c的不一樣。如:void func(int a, int b);對於c編譯器改編後的名字可能是_func, 而c++編譯器改編後可能是_func_int_int。

C 之String類函式原型

include include using namespace std class string string const string s 複製建構函式 void show friend ostream operator ostream os,string s 過載輸出運算子 1 friend i...

C 函式原型

一,函式原型 函式原型 函式宣告 就是告訴編譯器這個函式是存在的,讓編譯器知道這個函式的相關資訊。函式原型不要求提供形參名,有型別列表就可以了。避免使用函式原型的方法是,在首次使用函式定義之前定義它,但這並不是總可行的。我們一般把函式宣告放在主函式的前面,因為min 函式是應用程式的入口。函式宣告是...

C語言函式原型

在主調函式中呼叫某函式之前應對該被調函式進行說明 宣告 這與使用變數之前要先進行變數說明是一樣的。在主調函式中對被調函式作說明的目的是使編譯系統知道被調函式返回值的型別,以便在主調函式中按此種型別對返回值作相應的處理。其一般形式為 型別說明符 被調函式名 型別 形參,型別 形參 或為 型別說明符 被...