C可変長引数は呼び出し先の側で完全に処理されているというのが私の理解されているが、あなたはCでは、発信者はvariadicsを特別扱いしていますか?
f(1, 2, 3.0)
と機能f
を呼び出した場合、コンパイラはあなたが宣言していたかどうか、通話のための同じコードを生成すること、すなわち、 f
void f(int, int, double);
又は
void f(int, int, ...);
このquestiのコンテキストとしてonはthis issueで、バリストFFI定義を持つRustの真に可変なC関数を呼び出します。もしバリデリックスが呼び出し側の観点から重要でないならば(もちろん型チェックから)、Rustは関数がバリデーションとして宣言された呼び出しのために異なるコードを生成することは私にとっては奇妙に思えます。
実際にはC仕様ではなく、ABI依存である場合は、System V ABIの回答に最も興味がありますが、これは読んだところから特別な処理呼び出し元側のバリデーションの
私は信じています。 –
@EugeneSh。その場合、私はSystem V ABIに最も関心があることを反映するために私の質問を更新しました – Textfield
これは[この問題の重複しているようです](http://stackoverflow.com/questions/40216160/variadic-arguements -and-x64)もSystem V ABIに関係しています。何か違いはありますか? –