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
438
Vastaukset 3
- 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
- 961224
Poutalan onnettomuus
https://www.mtvuutiset.fi/artikkeli/ministeri-mika-poutala-vakavassa-onnettomuudessa/9375980 Kumma kun jutussa ei manit98975- 61837
Missä on Sofia Virta? Loistaa poissaolollaan Erikoisjoukot uudelta kaudelta
Vihreiden puheenjohtaja, kansanedustaja Sofia Virta pääsi otsikoihin, kun tieto hänen osallistumisestaan Erikoisjoukot-k35821Olen pahoillani
Olen mokannut pahasti ja pilannut sinun ja monen muun ihmisen maineen. Anteeksi. Muutan toiselle paikkakunnalle. Hyvästi52817Onko sinulla vihan tunteita
Minua kohtaan? Haluatko kostaa jotakin tai tehdä pahaa? Voit tähän sanoa ihan luottamuksella.126780- 3738
- 60606
Naisen kimppuun lenkkipolulla
Poliisin tietojen mukaan noin 30–40 vuotias ulkomaalaistaustaisen näköinen mies kävi naisen kimppuun yllättäen Rentukant41518Ei ole siitä kiinni
Että en tykkäisi. Tykkään liikaa, mutta se on epäsopivaa. Hirveää kidutusta ruokkia tunnetta täällä, jos todellisuudessa33506