«ошибка: слишком мало аргументов для работы» - PullRequest
11 голосов
/ 15 ноября 2009

У меня есть программа на C, которая называется opencv2.0 function:

cvSaveImage( out_img_name, img);  

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

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

Прототип cvSaveImage в highgui.h равен

CVAPI (int) cvSaveImage (const char * имя файла, const CvArr * изображение, const int * params CV_DEFAULT (0))

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

cvSaveImage( out_img_name, img, 0);  

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

Спасибо и всего наилучшего!

Ответы [ 2 ]

15 голосов
/ 15 ноября 2009

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

2 голосов
/ 15 ноября 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...