2009-11-15 8 views
11

Ho un programma C denominato opencv2.0 funzione:"Errore: troppo pochi argomenti di funzionare"

cvSaveImage(out_img_name, img); 
rapporti

compilatore GCC che

too few arguments to function cvSaveImage

Il prototipo di cvSaveImage in highgui.h è

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

Dopo cambio il mio invito ad essere

cvSaveImage(out_img_name, img, 0); 

La compilazione ha finalmente esito positivo. Significa che i valori predefiniti degli argomenti per la funzione sono supportati solo in C++ ma non C?

Grazie e saluti!

+0

Immagino che ciò accada solo nelle nuove versioni di opencv, non ho ricevuto questo errore con la vecchia versione disponibile su repository ubuntu, ma quando ho compilato la nuova versione, il codice che usava mi ha dato l'errore che sei parlando di –

risposta

15

Corretto: la C standard non supporta gli argomenti predefiniti, né nello standard C89 né nello standard C99 (né nello standard C2011). Potrebbero esserci estensioni specifiche del compilatore per supportarlo in alcuni compilatori, ma non è standard.

+0

Stavo scrivendo i miei programmi C usando i modelli di progetto disponibili per il linguaggio C++ in Visual Studio. Per un po 'ho continuato a scriverlo e nel momento in cui ho attivato le proprietà 'Configuration Properties -> C/C++ -> Advanced -> Compile As' a' Compila come codice C (/ TC) 'il mio codice' gets_s' ha iniziato a lanciare il errore menzionato in questa discussione. Poi ho dovuto passare esplicitamente i valori interi come secondo argomento di get_s per renderlo compilabile. – RBT

2

C richiede una notazione speciale se si desidera utilizzare un numero variabile di argomenti.

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

Non è possibile definire una variabile di default per essere passato a una funzione semplice. È possibile impostare una macro che passa automaticamente in un valore predefinito e utilizzarla come voce della funzione, se lo si desidera.

Problemi correlati