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

376

    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. Suomen kansa haluaa Antti Lindtmanista pääministerin

      Lindtman on miltei tuplasti suositumpi kuin etunimikaimansa Kaikkonen. Näin kertoo porvarimedian teettämä kysely. http
      Maailman menoa
      230
      4136
    2. Vain 21% kannattaa Lindtmania pääministeriksi

      se on selvästi vähemmän kuin puolueen kannatus, mites nyt noin?
      Maailman menoa
      112
      2611
    3. Miten löydän sinut

      Ja saan sanottua kaiken mitä haluan sinulle kertoa? Ja kuinka kuuntelisit minua sen hetken? Kuinka voin ilmaista sen mit
      Ikävä
      38
      2335
    4. Yöllinen autolla kaahari Heinolan seudulla

      Asukkaita häiriköivän nuoren herran autokaahaus keskustelu poistettu, onko jokin hyvävelijärjestelmä käytössä ?
      Heinola
      81
      1416
    5. Vaikea tilanne

      Hieman kolkuttaa omatuntoa, kun on osoittanut kiinnostusta väärää naista kohtaan. En ymmärrä miten toinen on voinut te
      Ikävä
      112
      1372
    6. Milloin kaivatullasi

      .. on nimipäivä?
      Ikävä
      48
      1159
    7. Kehtaisitko näyttäytyä

      kaivattusi seurassa?
      Ikävä
      76
      1059
    8. Ne viimeiset kerrat

      Kun katsoit minua niin lämpimästi. En unohda sitä ❤️
      Ikävä
      59
      933
    9. Missä kunnassa kaivattusi asuu

      Kuinka tarkkaa uskalla sanoa?
      Ikävä
      45
      916
    10. Emme koskaan keskustelleet kasvotusten syistä välirikollemme

      Enkä voisi kertoa perimmäistä rehellistä syytä. Kerroin sinulle pintapuolisen ”paketin” ja otin tavallaan omalle vastuu
      Ikävä
      58
      911
    Aihe