インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

呼び出し規約におけるスタックの注意事項 (Windows*)

C の呼び出し規約 (デフォルト) では、呼び出されたルーチンから制御が返ってきた直後に必ず呼び出し側のルーチンがスタックを調整します。この結果、プロシージャーが呼び出されるたびに、スタックを復元するためのコードが必要となるため、オブジェクト・コードのサイズが多少大きくなります。

32 ビット・アプリケーションでは、stdcall 呼び出し規則を使用すると、呼び出されたプロシージャーがスタックを制御します。スタックを復元するコードは、呼び出されたプロシージャーに含まれるため、このコードは一度しか使用されません。64 ビット・アプリケーションでは、STDCALL のスタック調整機能と @n サフィックス機能は使用されません。

C の呼び出し規約では、可変長引数による呼び出しが可能です。C の呼び出し規約では、呼び出し側がスタックをクリーンアップするので、可変長引数でルーチンを記述することができます。したがって、実際に渡された引数の数にかかわらず、フレームポインターを基準としたリターン位置のアドレスは変わりません。このため、呼び出し側のルーチンがスタックを制御する場合、渡された引数の数、それらのサイズ、およびスタックに含まれている位置が分かるので、引数をスキップしても、追跡を続行することができます。

可変長引数でルーチンを呼び出すには、ルーチンへのインターフェイスに ATTRIBUTES C オプションを追加します。