古典的なCで変数引数がどのように渡されるか知っている人はいますか?今日はいくつかのデバッグを行いましたが、ほとんどの通常の引数はスタックを介して渡されます。ただし、これは可変引数には当てはまらないようです。それらのパラメータは定数文字列のように別の場所に保存されていますか?
前もって感謝します!
古典的なCで変数引数がどのように渡されるか知っている人はいますか?今日はいくつかのデバッグを行いましたが、ほとんどの通常の引数はスタックを介して渡されます。ただし、これは可変引数には当てはまらないようです。それらのパラメータは定数文字列のように別の場所に保存されていますか?
前もって感謝します!
プラットフォームによって異なります。 /usr/include/stdarg.h
詳細を探し始める場所です。
それらは非常に頻繁にスタックに渡されます。探しているのは、使用しているプラットフォームの ABI 仕様です。
AMD64 プラットフォームについては、こちらの例をご覧ください。
可変長引数リストを意味しましたか?
ここに楽しいトリックがあります
void func(type* values) {
while(*values) {
x = *values++;
/* do whatever with x */
}
}
func((type[]){val1,val2,val3,val4,0});