FreeBASIC マニュアルのトップに戻る

FreeBASIC Stdcall

目次→命令文→手続きSTDCALL←オリジナル・サイト

STDCALL 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

手続きの宣言の中で、stdcall-スタイル 呼び出し規則 を指定します。

構文:
Sub name Stdcall [Overload] [Alias "alias"] ( parameters )
Function name Stdcall [Overload] [Alias "alias"] ( parameters ) [ Byref ] as return_type

記述:
手続きの宣言で、Stdcall は、手続きが、Stdcall 呼び出し規則を使用する、と指定します。
Stdcall 呼び出し規則では、どんなパラメータも、そのリストの逆順(すなわち右から左の順)に渡される(スタックに押しつける)ことになっています。
手続きは、EAX, ECX または EDX レジスタを保持する必要はなくて、戻る前に、手続きは、スタックを消去(全てのパラメタをポンと出す)しなければなりません。

Stdcall は、可変個引数の手続きの宣言(最後のパラメタが "..." としてリストアップされている)と一緒には使えません。

Stdcall は、Windows でデフォルトの呼び出し規則です。他の呼び出し規則が明示的に指定されるか、EXTERN blocks の1つによってほのめかされた場合に限り、呼び出し規則が変わります。
Stdcall は、また、BASIC 言語と Windows API で使われる標準の(または最も一般的な)呼び出し規則です。

手続き定義に宣言が(呼び出し規約が明示的またはデフォルトで)あり 、その定義で呼び出し規約が明示的に指定されていない場合、呼び出し規約は宣言によって暗示されます。

例:
Declare Function Example stdcall (param1 As Integer, param2 As Integer) As Integer
Declare Function Example2 cdecl (param1 As Integer, param2 As Integer) As Integer

Function Example stdcall (param1 As Integer, param2 As Integer) As Integer
    ' これは STDCALL 関数です。スタック上の最初のパラメーターは param2 です。これは最後に押されたからです。
    Print param1, param2
    Return param1 Mod param2
End Function

Function Example2 cdecl (param1 As Integer, param2 As Integer) As Integer
    ' これは CDECL 関数です。スタック上の最初のパラメーターは param1 です。これは最後に押されたからです。
    Print param1, param2
    Return param1 Mod param2
End Function


プラットホーム差:

QBからの違い:

参照:
手続きに戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2022-10-31 05:46:28
日本語翻訳:WATANABE Makoto、原文著作者:SysOp

ホームページのトップに戻る

表示-非営利-継承