Tonuri de convenții

Specificații privind modul apelantului.

Apel acord definesc modul în care apelantul interacționează cu procedurile în apel. Acestea definesc regulile de modul în care parametrii sunt plasate pe stiva ca o valoare de întoarcere, iar când stiva este ștearsă. Această informație este utilă atunci când interacționează cu cod scrise în alte limbi, mai ales pentru limbaj de asamblare. În unele cazuri, convenția de asteptare este, de asemenea, utilizat ca un nume de procedura de înregistrare.

FreeBASIC sprijină 3 convenție: stdcall. cdecl și pascal. definită cu stdcall. cdecl și pascal. respectiv. Chemat convenție pot fi specificate în procedurile de declarare sau de definire, imediat după numele procedurii. În cadrul procedurii de declarare ar trebui să fie aceeași convenție ca Convenție și în definiția.

stdcall apel convenție în mod implicit pe Windows, cât și pentru procedurile cu blocuri Extern „Windows“ și Extern „Windows-Ms“. Aceasta este convenția implicită este, de asemenea, utilizat în API-ul pentru Windows.


  • Pe platformele DOS și Windows, numele procedurii se face cu sufixul „@N“, unde N este dimensiunea totală în octeți a tuturor parametrilor.


Convenția de cdecl. Setările la procedurile de pe stivă înainte de apel pentru a inversa procedura, mai degrabă decât cea care sunt declarate, adică, de la dreapta la stânga. Apelantul este responsabil pentru împingerea parametrii de pe stivă.

convenția implicită cdecl de apeluri pentru Linux, * BSD, și DOS, precum și pentru procedurile cu blocuri Extern "C" si Extern "C ++". Deci, este această convenție implicit pentru C și C ++ compilatoare.

Convenția este Pascal implicit pentru Pascal și o serie de compilatoare Microsoft QuickBasic.

Tabelul de mai jos prezintă diferențele dintre convențiile:

Parametrii sunt plasați în stiva de apel