Powiel możliwe:
Error: No previous prototype for function. Why am I getting this error?Brak poprzedniego prototypu?
Mam funkcji, że prototypy w pliku nagłówkowym, jednak Xcode wciąż daje mi ostrzeżenie No previous prototype for the function 'printBind'
. Mam funkcję prototypowania setBind
w taki sam sposób, ale nie dostaję ostrzeżenia o tej funkcji w mojej implementacji.
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);
}
Chociaż teraz rozumiem przyczynę błędu, tak naprawdę nie rozumiem użyteczności tej funkcji. Kiedy zdefiniowałbyś funkcję z nieokreśloną listą parametrów i co to dokładnie ma wspólnego z C++? Czy jest to przydatna funkcja w C++? – sherrellbc
Nie można zdefiniować prototypu z nieokreśloną listą argumentów w C++. W języku C++ oznacza to "brak argumentów", a nie "nieokreślone argumenty". Ta funkcja nie jest tak przydatna, jak konieczne ustępstwo na rzecz rzeczywistości. Po standaryzacji C cała ogromna baza kodu została napisana bez prototypów; nie istniały w C. Pusta notacja w nawiasach była wszystkim, co było w pre-normie C. Aby wyegzekwować zakaz, zabiłoby to powstający standard C. Tak było nadal w przypadku C99. Dla C11 było to mniej jasne, ale pozostało niezmienione. –