järjestyksellä väliä?

aloittelija_19

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?

3

364

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. Sanna Marin teki sen, mihin muut eivät pystyneet - sote kerralla maaliin

      Yli 15 vuotta Suomessa vatvottu sote-uudistus meni lopulta läpi Sanna Marinin hallituksen aikana. Edeltävät hallitukset
      Maailman menoa
      104
      10658
    2. Pikkupersu osoitti olevansa hieman yksinkertainen

      "Heikosti älykkyystesteissä pärjänneistä lapsista tulee muita todennäköisemmin ennakkoluuloisia ja konservatiivisia", uu
      Maailman menoa
      154
      8918
    3. Marinin hallitus hyväksyi soten (105-77) vuonna 2021

      vastaan äänesti Kok, persut, KD, Liike Nyt. Nyt on sitten käynyt niin kuin on käynyt. Pääkirjoitus: Sanna Marin jätti
      Maailman menoa
      90
      6107
    4. Kannattaako suomalaisen duunarin enää äänestää vasemmistopuolueita

      sillä eivät ne tunnu kovasti ajavan suomi-duunarin etuja. Jos katsotaan Vasemmistoliittoa, niin sehän on ihan feministi
      Maailman menoa
      83
      5107
    5. Jos on heikkolahjainen ja laiska koulupudokas, niin silloin äänestää vasemmistopuolueita

      näin tämä on käytännössä aina mennyt. Jos ei älyä ole paljon suotu, niin ei silloin inssiksi opiskella, vaan päädytään
      Maailman menoa
      66
      4384
    6. Enää viisi yötä Sannan kirjaan

      Ihan täpinöissään tässä odotellaan. Vaikea pysytellä aloillaan, kun koko ajan tekisi mieli jo kirjakauppaan rynnätä, mut
      Maailman menoa
      64
      4276
    7. Professori: Maahanmuuttajien rikollisuutta hyssytellään - hävytöntä

      Kriminologi Jukka Savolaisen mukaan ikä ja vaikeat olosuhteet eivät riitä selitykseksi. – Tutkitun tiedon valossa sanoi
      Maailman menoa
      72
      4065
    8. Sanna-kulttilaiset hehkuttaa edelleen Marinia, vaikka esim. Sote oli susi jo syntyessään

      mutta kulttilaiset eivät ole järjen jättiläisiä, ja sanoihin Lasse Lehtinenkin, että Suomessa on pohjoismaiden tyhmimmät
      Maailman menoa
      50
      3749
    9. Marin teki sen mihin muut eivät pystyneet, vei susi-Soten maaliin

      ja sitten hävittyjen vaalien jälkeen lähtikin vastuuta pakoon...... "Professori: sote-uudistus on täysi susi. Sosiaali
      Maailman menoa
      10
      3433
    10. IL - 100 000 potentiaalista sotilasta pakeni Ukrainasta!

      "Ukrainasta nuorten miesten joukkopako Liki 100 000 asevelvollisuusikäistä miestä on poistunut Ukrainasta parin viime k
      Maailman menoa
      74
      3015
    Aihe