関数

呼び出し規約 (Calling Conventions)

外部関数の呼び出し時には、双方の処理方法が一致するようにキーワードを指定します。

キーワード スタックのクリーンアップ 引数渡し規約 スタック メンテナンスの役割 名前装飾規約 大文字と小文字の変換規約 用途
__cdecl 呼び出し (Caller) 逆順 (右から左) で、スタックにパラメータをプッシュする 呼び出し元の関数によって、スタックから引数がポップされる 名前の前にアンダースコア (_) が付けられる。ただしCリンケージを使用する__cdecl関数をエクスポートする場合は除く 変換されない CとC++プログラムの呼び出し
__stdcall 呼び出し (Callee) 逆順 (右から左) で、スタックにパラメータをプッシュする

ポインターまたは参照型が渡されない場合は、値渡し

呼び出された関数が、自分の引数をスタックからポップする 名前の前にアンダースコア (_) が付けられ、名前の後にアットマーク (@) と引数リストのバイト数 (10進数) が続く。したがってint func(int a,double b)として宣言された関数は「_func@12」のように修飾される --- Win32 API関数の呼び出し
__clrcall なし Load parameters onto CLR expression stack in order (left to right).       マネージコードからの呼び出し
__fastcall 呼び出し先 (Callee) 左から右への引数リストで見つかる最初の2つのDWORDまたはこれより小さい引数は、ECXおよびEDXレジスタに渡される。他の引数はすべてスタック上で右から左へ渡される 呼び出された関数によって、スタックから引数がポップされる 名前の前にアットマーク (@) が付けられる。パラメーター リストでバイト数 (10進数) が後続するアットマークは、名前に後に付けられる 変換されない  
__thiscall 呼び出し先 (Callee) Pushed on stack; this pointer stored in ECX        
__vectorcall 呼び出し先 (Callee) Stored in registers, then pushed on stack in reverse order (right to left) --- 名前の後に2つのアットマーク (@@) とそれに続くパラメーター リストのバイト数 (10進数) が付けられる 変換されない  
引数の渡し規則と名前付け規則 | Microsoft Learn

__cdecl

__cdecl | MSDN

__stdcall

return-type __stdcall function-name[(argument-list)]
__stdcall | Microsoft Learn
Microsoft Learnから検索