2017-12-02 10 views
0

に空のパラメータリストで関数に渡されたパラメータへのアクセス、 私はとして定義された関数があると仮定:空のパラメータリストを持つ関数は、Cのパラメータの可変数を渡すことができるので、C

void foo(){ 
// I want to access the parameters passed in here 
} 

をそして、私は、引数を指定してそれを呼び出す私は私のfoo()関数の中にあるものを渡された引数の値のホールドを取得するため

foo(1,2,3); 

が可能であると言いますか?私は$ _というPerlのデフォルト変数の行に沿って何かを期待しています。

EDIT:行動イムの一種期待は、この質問に描か1のようなものです:C function with no parameters behavior

+1

を必要とするPerlで働く_'どのように '$ではない、と私は関数呼び出しが未定義の動作をしていることを確信しています。 – melpomene

+0

可変機能を探していますか? – alk

+0

あなたがリンクした質問には、このコメントが含まれています: "* @ Johnコンパイラは引数の数(または型)をチェックしませんが、定義内のパラメータに一致する引数で関数を呼び出す必要があります*" – melpomene

答えて

0

C99:

6.5.2.2機能は

[を呼び出します... ]

  1. 呼び出された関数を表す式がat プロトタイプが含まれていないypeでは、各引数に対して整数昇格が実行され、 型の引数はfloatになり、doubleに昇格されます。これらは、デフォルトの引数 プロモーションと呼ばれます。 引数の数がパラメータの数と等しくない場合、 の動作は未定義です。

(強調鉱山。)

したがってfoo(1,2,3)未定義の動作を有しています。余分な引数にアクセスすることはできませんが、関数本体に入ることさえ保証されていません。

関連する問題