"ошибка: слишком мало аргументов для функции"

У меня есть программа C, называемая функцией opencv2.0:

cvSaveImage( out_img_name, img);  

Компилятор gcc сообщает, что

слишком мало аргументов для функции cvSaveImage

Прототипом cvSaveImage в highgui.h является

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

После того, как я изменил свой вызов на

cvSaveImage( out_img_name, img, 0);  

Компиляция наконец-то успешна. Означает ли это, что значения по умолчанию для аргументов функции поддерживаются только в С++, но не C?

Спасибо и приветствую!

Ответ 1

Правильно - стандарт C не поддерживает аргументы по умолчанию, ни в стандарте C89, ни в стандарте C99 (а также в стандарте C2011). В некоторых компиляторах могут существовать расширения для компилятора, но они не являются стандартными.

Ответ 2

C требуется специальное обозначение, если вы хотите использовать переменное количество аргументов.

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

Вы не можете определить переменную по умолчанию, которая будет передана простой функции. Вы можете настроить макрос, который автоматически магически передает значение по умолчанию, и использовать его как свою запись функции, если вы хотите.