2009-11-15 35 views
11

Tengo un programa llamado C opencv2.0 función:"error: muy pocos argumentos para funcionar"

cvSaveImage(out_img_name, img); 
informes

compilador gcc que

too few arguments to function cvSaveImage

El prototipo de cvSaveImage en highgui.h es

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

Después de que cambie de llamada a ser

cvSaveImage(out_img_name, img, 0); 

La compilación es finalmente exitosa. ¿Significa que los valores predeterminados de argumentos para la función solo se admiten en C++ pero no en C?

¡Gracias y saludos!

+0

Supongo que simplemente sucede en las nuevas versiones de opencv, no obtuve este error con la versión anterior disponible en los repositorios de ubuntu, pero cuando compilé la nueva versión, el código que solía ejecutar me dio el error que está hablando de –

Respuesta

15

Correcto - El estándar C no admite argumentos por defecto, ni en el estándar C89 ni en el estándar C99 (ni en el estándar C2011). Puede haber extensiones específicas del compilador para soportarlo en algunos compiladores, pero no es estándar.

+0

Estaba escribiendo mis programas C usando plantillas de proyectos disponibles para el lenguaje C++ en Visual Studio. Durante un tiempo lo escribí y en el momento en que activé el ajuste 'Propiedades de configuración -> C/C++ -> Avanzado -> Compilar como' para 'Compilar como código C (/ TC)' mi código 'gets_s' comenzó a lanzar el error mencionado en este hilo. Luego tuve que pasar explícitamente valores enteros como segundo argumento de 'get_s' para hacerlo compilable. – RBT

2

C requiere una notación especial si desea utilizar un número variable de argumentos.

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

No se puede definir una variable por defecto para ser pasados ​​a una función normal. Puede configurar una macro que automáticamente pasa mágicamente en un valor predeterminado y usar eso como su entrada de función si así lo desea.

Cuestiones relacionadas