Duplicar posible:
Error: No previous prototype for function. Why am I getting this error?¿Ningún prototipo anterior?
que tiene una función que un prototipo en el archivo de cabecera, sin embargo Xcode todavía da advirtiéndome No previous prototype for the function 'printBind'
. Tengo la función setBind
prototipada de la misma manera pero no recibo una advertencia para esta función en mi implementación.
CelGL.h
#ifndef Under_Siege_CelGL_h
#define Under_Siege_CelGL_h
void setBind(int input);
void printBind();
#endif
CelGL.c
#include <stdio.h>
#include "CelGL.h"
int bind;
void setBind(int bindin) { // No warning here?
bind = bindin;
}
void printBind() { // Warning here
printf("%i", bind);
}
Aunque ahora entiendo el motivo del error, realmente no entiendo la utilidad de esta característica. ¿Cuándo definirías una función con una lista de parámetros indeterminados y qué tiene que ver exactamente con C++? ¿Es esta una característica útil en C++? – sherrellbc
No se puede definir un prototipo con una lista de argumentos indeterminados en C++. En C++, eso significa "sin argumentos", no "argumentos indeterminados". La característica no es tanto útil como una concesión necesaria a la realidad. Cuando C se estandarizó, toda la vasta base de códigos se escribió sin prototipos; no habían existido en C. La notación de paréntesis vacía era todo lo que había en el preestablecimiento C. Haber proscrito habría matado al naciente estándar C. Eso seguía siendo cierto para C99. Fue menos claro para C11, pero no se modificó. –