2012-02-16 32 views
4

gccに引数に基づいて関数の引数番号をチェックさせる方法はありますか? printfを使って?printfの "形式の引数が多すぎます"

は、例えば、私たちはその現在必要な引数の数に情報を与え、それが間違っているとき、gccが私たちに教えなければならないいくつかの必須の引数とSTDARG-使用方法を持つことができます。

calculate_mean(4, //Number of arguments 
       3, 2, 1, 10); //actual parameters 

calculate_mean(5,   //Custom warning from gcc because 
       1, 5, 10, 2); //there is one missing argument 

与える:

# gcc -c file.c -o file.o 
gcc: Warning: calculate_mean: Too few arguments (5 required, 4 given) 

コード内、設定ファイルから行うことができますか、それともコンパイラ内でハードコードされている可能性はありますか?

+0

それは疑問ですが、興味深い質問です。 – MByD

+1

[gcc plugin](http://gcc.gnu.org/onlinedocs/gccint/Plugins.html)を作成することもできます。 – pmg

答えて

1

printfスタイル文字列のサポートは、コンパイラにハードコードされているようです。特に、コンパイラには、printfスタイル関数に注釈を付けるために使用できる特別なformat function attributeがあります。

+0

ありがとう!私は属性 'format(archetype、string-index、first-to-check)'が私が探していたものだと思います。私は引数の数についての属性を見つけることができませんでした。 – Eregrith

関連する問題