klucz jest w ten sposób:
poprzednie niejawna deklaracja z „point_forward” było tutaj
W linii 96 masz:
point_forward(m); // where m is a mem_ptr;
Ponieważ kompilator jeszcze nie widział deklarację funkcji dla point_forward(m)
, to „w sposób dorozumiany definiuje "(tj. zakłada) funkcję, która zwraca wartość int:
int point_forward(mem_ptr m);
konflikty z definicją później:
void point_forward (mem_ptr m) {
Aby rozwiązać ten problem, można:
Put wyraźne oświadczenie gdzieś przed linią 96: void point_forward(mem_ptr m);
To poinformować kompilator, jak traktować point_forward()
kiedy widzi go na linii 96, mimo że nie widział jeszcze implementacji funkcji.
Lub, zdefiniuj całą funkcję powyżej linii 96 (przenieś definicję funkcji z linii 134 do powyższej linii 96).
Tutaj jest trochę more about declaring functions.
Generalnie, za styl, chciałbym albo:
Jeśli nie chcesz używać point_forward()
w innych plikach C, zdefiniować go w całości:
static void point_forward(mem_ptr m) { ..function body goes here.. }
na początek pliku źródłowego.
Jeśli chcesz użyć point_forward()
w innych plikach C, umieścić do przodu deklarację:
void point_forward(mem_ptr m);
w pliku nagłówka dla innych plików do uwzględnienia.
proszę wkleić to, co masz w linii 96 –
point_forward (m); – user2313514
To jest jedyna inna instancja tej funkcji w moim kodzie. – user2313514