Memanggil konvensi
Saat mendeklarasikan prosedur atau fungsi, Anda dapat menggunakan salah satu indikator berikut untuk menunjukkan konvensi panggilan: Daftar, Pascal, CDECL, STDCall, dan SafeCall. Misalnya,
fungsi myfunction (x, y: nyata): nyata;
...
Konvensi panggilan menentukan urutan di mana parameter diteruskan ke rutin, dan mereka juga mempengaruhi penggunaan register saat menghapus parameter dari tumpukan, parameter lewat, dan kesalahan dan penanganan pengecualian. Konvensi panggilan default adalah Register.
• Daftar dan PASCAL Panggilan Parameter dari kiri ke kanan, yaitu, parameter paling kiri dihitung dan dilewati paling awal, dan parameter paling kanan akhirnya dihitung dan dilewati;
• Selain panggilan CDECL, prosedur dan fungsi menghapus parameter dari tumpukan sebelum kembali, sementara cdecl menggunakan, ketika panggilan kembali, penelepon menghapus parameter dari tumpukan;
• Pendaftaran panggilan dapat melewati parameter menggunakan hingga 3 register CPU, sementara panggilan lain semua menggunakan tumpukan untuk lulus parameter;
• Panggilan Safecall mengimplementasikan pengecualian "firewall", yang mengimplementasikan pemberitahuan kesalahan antar proses di bawah Windows.
Tabel berikut merangkum konvensi panggilan:
-------------------------------------------------- ------------------------------------------------
-Indicator Words ----------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---? |
-Register --------------- Kiri ke kanan --------- Rutin ----------------- Ya --------------------- ||
-pascal --------------- Kiri ke kanan --------- Rutin ----------------- ------------------------- |
-cdecl ----------------- Kanan-ke-kiri --------- Penelepon ---------------- --- Tidak ---------------------------- |
-stdcall ---------------- Right-to-Left ---------- Rutin ---------------- --- Tidak ------------------------- |
-Safecall --------------- Hak-ke-kiri ---------- Rutin ----------------- --- Tidak ---------------------- |
-------------------------------------------------- -----------------------------------------------
Panggilan register default paling efisien karena biasanya menghindari membuat bingkai tumpukan (register harus digunakan saat mengakses properti yang diterbitkan); saat memanggil fungsi dari perpustakaan bersama yang ditulis dalam C/C ++, CDECL berguna; STDCall dan Safecall direkomendasikan. Di Windows, API Sistem menggunakan STDCall dan SafeCall, sementara sistem operasi lainnya biasanya menggunakan CDECL (perhatikan bahwa STDCall lebih efisien daripada CDECL).
Metode yang menyatakan antarmuka ganda harus menggunakan SafeCall; Untuk informasi lebih lanjut tentang konvensi panggilan, lihat kontrol program.
Indikator dekat, jauh, dan ekspor digunakan dalam pemrograman Windows 16-bit, dan mereka tidak berpengaruh pada program 32-bit, dan mereka dipertahankan untuk kompatibilitas ke belakang.