2

古典的なCで変数引数がどのように渡されるか知っている人はいますか?今日はいくつかのデバッグを行いましたが、ほとんどの通常の引数はスタックを介して渡されます。ただし、これは可変引数には当てはまらないようです。それらのパラメータは定数文字列のように別の場所に保存されていますか?

前もって感謝します!

4

4 に答える 4

3

プラットフォームによって異なります。 /usr/include/stdarg.h詳細を探し始める場所です。

于 2011-03-31T19:41:21.803 に答える
2

それらは非常に頻繁にスタックに渡されます。探しているのは、使用しているプラ​​ットフォームの ABI 仕様です。

AMD64 プラットフォームについては、こちらの例をご覧ください。

于 2011-03-31T19:41:48.653 に答える
1

可変長引数リストを意味しましたか?

于 2011-03-31T19:40:37.010 に答える
0

ここに楽しいトリックがあります

void func(type* values) {
    while(*values) {
        x = *values++;
        /* do whatever with x */
    }
}

func((type[]){val1,val2,val3,val4,0});
于 2011-11-27T04:36:16.617 に答える