2009-11-15 19 views
11

私はopencv2.0機能と呼ばれるCプログラムを持っている:highgui.hで"エラー:機能するには少なすぎる引数"

too few arguments to function cvSaveImage

cvSaveImageのプロトタイプであることを

cvSaveImage(out_img_name, img); 

コンパイラGCCレポート私はあることを私の呼び出しを変更した後

CVAPI(int) cvSaveImage(const char* filename, const CvArr* image, const int* params CV_DEFAULT(0))

cvSaveImage(out_img_name, img, 0); 

最終的にコンパイルが成功しました。関数の引数のデフォルト値は、C++ではサポートされていますが、Cではサポートされていないことを意味しますか?

ありがとうございました!

+0

私はopencvの新しいバージョンで起こったと思いますが、私はubuntuリポジトリで利用可能な古いバージョンではこのエラーが発生しませんでしたが、私が新しいバージョンをコンパイルすると、 about about –

答えて

15

修正 - 標準Cは、C89標準でもC99標準(C2011標準)でも、デフォルト引数をサポートしていません。一部のコンパイラではコンパイラ固有の拡張がサポートされている場合がありますが、標準ではありません。

+0

Visual StudioでC++言語で使用できるプロジェクトテンプレートを使用してCプログラムを作成していました。しばらくの間、私はそれを書いておきました。そして、 'Configuration Properties - > C/C++ - > Advanced - > Compile As'を' Cコード(/ TC)としてコンパイル 'に設定した瞬間、私の 'gets_s'コードはこのスレッドで言及されているエラー。次に、整数値を 'get_s'の第2引数として明示的に渡してコンパイル可能にしなければなりませんでした。 – RBT

2

可変数の引数を使用するには、Cに特別な表記が必要です。

http://www.swig.org/Doc1.3/Varargs.html

あなたはプレーンな関数に渡されるデフォルトの変数を定義することはできません。自動魔法のようにデフォルト値で渡すマクロを設定し、望むならそれをあなたの関数のエントリーとして使うことができます。

関連する問題