Tässä olis guruille pähkinä purtavaksi. Elikkäs kyse on pointtereista ja argumenteista. Miksi C koodi pitää aloittaa aina aliohjelmalla, kun käytetään pointtereita ja argumentteja.
esimerkiski tälläinen koodipätkä toimii vain toisinpäin, miksi? Voiko C kääntäjillä olla eroja siinä että jotkut kääntää koodia miten vaan ja toiset ei sitten kuin vain yhdellä tavalla koodattuna???
Tässä sitten esimerkki, ensin main ja sitten funktiokutsun kautta Aliohjelma. Kääntäjä valittaa erroria.
/****** EI TOIMI ********/
int main(){
int variable;
Aliohjelma();
}
int *Aliohjelma(){
int *pointer;
return(pointer);
}
/******END*********/
...ja tälläistä kääntäjä valittaa:
error #2120: Redeclaration of 'Aliohjelma' previously declared .... found 'int * __cdecl function(void)' expected 'int __cdecl function'.
tässä olisi sama asia toisinpäin, eli ensin Aliohjelma ja sitten main. Ja nyt toimii.
/************* T O I M I I ************/
int *Aliohjelma(){
int *pointer;
return(pointer);
}
int main(){
int variable;
Aliohjelma();
}
/***********E N D**********/
Miksi?
järjestyksellä väliä?
3
300
Vastaukset
- asdasdasd
Et ole esitellyt tuota funktiota. Mistä se kääntäjä tietäis millainen funktio se on?
Tee tyyliin:
int *Aliohjelma(); /* esittely, kääntäjä tietää funktion tyypin */
int main()
{
Aliohjelma()
}
int *Aliohjelma()
{
int *pointer;
/* tietty tää osoitin pitäis alustaa jne, mut en ota kantaa siihen */
return pointer;
}- aloittelija_19
Ajattelinkin että tuo funktion esittely puuttui, mutta en vaan millään muistanu että miten se kirjoitetaan. Nyt toimii taas
Osoittimen alustuksen lisäksi pitää vielä muistaa asettaa siihen jotain järkevää (esim. mallocilla varattu muistialue), jos sen meinaa vielä palauttaakin funktiosta. Muuten paluuarvona on osoitin, joka ei osoita enää paljoa minnekään, joten ohjelma todnäk vain kaatuu.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Täytyi haukkuu sut lyttyyn
En haluu tuntee rakkautta sua kohtaan enää ja haluun unohtaa sut mut sit tulee kuiteki paha olo kun haluis vaan oikeesti611663- 441003
SINÄ nainen hyvin läheltä
Pidän sinusta. Mutta mene ensin juttelemaan lääkärin luokse, ja hoida itsesi kuntoon. Sit kun sä olet kunnossa, niin mä62958Ajatus aamuun
Tämä jollekin tärkeälle. On asioita mistä jutellaan, on asioita mistä vitsaillaan, on myös asioita mistä ei puhuta kenen71929Et voi olla loputtomasti hiljaa
Nainen. Tarkoitan siis meidän juttua. Eihän tämä tällaiseen epätietoisuuteen voi jäädä siinä vaan särkyy kumpikin. Kerto60898Nainen mitä tekisit
Joutuisit tekemään miehelle ja sinulle tai sinulle ja miehellesi ja kahdelle lapselle ruokaa ja kaapista löytyy 2 litraa158879- 44840
Martina kauniina lehtihaastattelussa
Martina antoi hyväntuulisen haastattelun lehteen. Tyylikkäitä kuvia ja kivoja vaatteita kauniilla Martinalla.182785- 58768
Minä en luota sinuun yhtään nainen
ja aistin että yrität taas satuttaa henkisesti koska tiedät että olet heikkouteni joten siksi tein mitä tein mutta en ki34752