1

関数プロトタイプに_stdcall(呼び出し元がスタックをクリアする必要はありません) を配置すると、コンパイラまたはリンカーによって処理されますか?

4

3 に答える 3

2

呼び出し規約は、関数の呼び出し方法(パラメーターの準備と ctack のクリーンアップのための特定のマシン コード) であり、リンカーはどの関数 (どのアドレスの関数) を呼び出すかを処理します。

したがって、通常、コンパイラは正しいコードを生成し、正確な関数アドレスの「プレースホルダー」を残し、リンカーは実際のアドレスをそこに配置します。そうは言っても、リンカによって両方が行われる、いわゆるリンク時コード生成があります。

于 2011-05-05T14:23:16.767 に答える
1

呼び出し規約はコード生成に影響を与えるため、それを処理するのはコンパイラです。リンカーはそれについて知る必要はありません。

于 2011-05-05T14:21:53.780 に答える