Jatkoin pitkästä aikaa projektia ja nyt kääntäjä tai siis linkkeri heittää tämmöstä toimivaan koodiin. Missä voisi olla vika?
.objs\main.o:main.cpp|| undefined reference to `Tapahtumat()'|
.objs\main.o:main.cpp|| undefined reference to `Tapahtumat()'|
.objs\main.o:main.cpp|| undefined reference to `Tapahtumat()'|
.objs\main.o:main.cpp|| undefined reference to `Tapahtumat()'|
.objs\main.o:main.cpp|| undefined reference to `Tapahtumat()'|
.objs\main.o:main.cpp|| more undefined references to `Tapahtumat()' follow|
||=== Build finished: 6 errors, 0 warnings ===|
Yrität kutsua funktiota 'Tapahtumat()', joka on (mahdollisesti) esitelty, mutta sitä ei ole määritelty. Lisää funktion määrittely ennen kutsua. Muuta on melkeinpä mahdoton sanoa ilman koodin katsomista.
Teuro, menivätkö termit nyt juuri väärin päin? Määrittely on se funktion sisältö, esittely on pelkkä prototyyppi.
DumTomin ohjaisin C++-oppaan pariin, asiat ovat samat kuin C:ssä.
Tarkoitin tällaista koodia, jossa on esittely ennen mainia. Vai menikö nyt sittenkin vielä väärin?
#include <iostream> int kertoma(int n); int main() { std::cout << kertoma(2) << std::endl; return 0; }
Tämä tuottaa juuri tuon undefined reference linkkausvirheen. Lisäämällä funktion määrittelyn virhe poistuu.
#include <iostream> int kertoma(int n); int main() { std::cout << kertoma(2) << std::endl; return 0; } int kertoma(int n) { return (n * n); }
Tarkoitus ei ole aloittaa kinaamista, vaan selkeyttää ajatuksia tuon edellisen kirjoituksen takaa. Termit menivät minusta kuitenkin ihan oikein.
Ylläolevassa koodissa sinulla on kuitenkin määrittely (rivit 10-12) vasta kutsun jälkeen (rivi 6). Se on ok, koska esittely (rivi 3) on tehty ennen kutsua.
Teuro: Valitin näköjään aamusella vähän väärästä asiasta. :) Vika ei ollutkaan termeissä sinänsä vaan oudossa ohjeessa. Jos funktion esittely on oikeassa paikassa, määrittelyn ei tarvitse olla ennen kutsua vaan sen voi lisätä yhtä hyvin vasta kutsun jälkeen, kuten Chiman yllä taitaakin juuri sanoa. (Tuon outouden takia ehkä luin viestistä loputkin kohdat hassusti.)
Virhe oli sangen simppeli mutta yllättävä,jostain syystä short Tapahtumat(void){return 0;} puuttui koodista kokonaan..... Itse funktio löytyi varmuuskopiosta. Saatanan pitkä funktio ja mulla ois menny ikuisuus kirjottaa se uudestaan...Kaikkee sitä sattuu kun väsyneenä koodaa....Red Bull Rules????
Aihe on jo aika vanha, joten et voi enää vastata siihen.