Ugrás a tartalomhoz

entry point

A Wikiszótárból, a nyitott szótárból


Főnév

entry point (tsz. entry points)

  1. (informatika) A programozás során minden futtatható programnak van egy belépési pontja (entry point), ahol a program végrehajtása elkezdődik. Ez az a hely, ahol a programvezérlés átvétele megtörténik, és onnan indul el a kód futása. C++-ban ez az entry point alapvetően a main függvény.

A következőkben részletesen megvizsgáljuk, mit jelent az entry point, hogyan működik a main függvény, milyen szabályok és variánsok vannak, és milyen szerepet játszik az operációs rendszer a program elindításakor.



1. Mi az entry point?

Az entry point egy programban egy konkrét hely a kódban, ahol a futás elkezdődik. Más szavakkal: ez az első utasítás, amely végrehajtódik, amikor a programot elindítjuk.

  • C és C++ programok esetében ez a main() függvény.
  • Ez a hely az, ahol az operációs rendszer átadja a vezérlést a programnak.
  • Az entry point megadása kritikus ahhoz, hogy a program futtatható legyen.



2. A C++ program entry pointja: a main függvény

C++ szabvány szerint a main függvény az egyetlen kötelező belépési pont egy szabványos C++ programban. Ez a függvény a program elindításakor végrehajtásra kerül.

Alapvető formák:

int main() {
    // a program kezdőpontja
    return 0;
}

vagy

int main(int argc, char* argv[]) {
    // a program kezdőpontja argumentumokkal
    return 0;
}
  • int main() egy egyszerű belépési pont, amely nem vár argumentumokat.
  • int main(int argc, char* argv[]) vagy int main(int argc, char** argv) egy olyan verzió, amely parancssori argumentumokat fogad.



3. Mi történik a main függvényben?

  • Amikor a program elindul, az operációs rendszer betölti a programot a memóriába.
  • A vezérlést átadja a program entry point-jának, ami a main függvény kezdete.
  • A main futása közben végrehajtódik a program összes utasítása.
  • A main visszatérési értéke a program kilépési kódja, amit az operációs rendszer értékel (általában 0 jelent sikeres futást).



4. main visszatérési értéke

  • Az int típusú visszatérési érték általában 0, ami azt jelenti, hogy a program sikeresen lefutott.
  • Nem nulla érték jelezhet hibát vagy nem várt állapotot.
  • Ha nem explicit adunk visszatérési értéket, a C++ szabvány szerint a main végén automatikusan return 0; kerül.



5. main paraméterek: argc és argv

Ezek a paraméterek a program indításakor átadott parancssori argumentumokat tartalmazzák.

  • argc: az argumentumok száma (legalább 1, mert az első mindig a program neve).
  • argv: az argumentumokat tartalmazó karaktertömbök tömbje.

Példa:

int main(int argc, char* argv[]) {
    for (int i = 0; i < argc; ++i) {
        std::cout << "Argument " << i << ": " << argv[i] << "\n";
    }
    return 0;
}

Ez kilistázza az összes parancssori argumentumot.



6. Egyéb main formák és szabályok

  • A main visszatérési típusa minden esetben int kell, hogy legyen.
  • Néhány régebbi vagy speciális környezet engedi a void main()-t, de ez nem szabványos, és kerülendő.
  • main-t nem lehet túlterhelni (overload), és nem lehet más visszatérési típusa.
  • main nem lehet inline vagy constexpr.



7. Mi történik a main előtt és után?

  • C++ programban a main meghívása előtt a globális és statikus objektumok konstruktorai lefutnak.
  • A main után ezek destruktorai futnak le.
  • Ez biztosítja a globális állapot helyes inicializációját és takarítását.



8. Entry point az operációs rendszer szemszögéből

  • Amikor futtatunk egy programot, az OS betölti a végrehajtható fájlt a memóriába.
  • Az OS tudja a program entry point címét (ez egy memóriacím a futtatható fájl fejlécében).
  • Ez az a cím, ahol a program futása elkezdődik.
  • A legtöbb operációs rendszer ezt a címet a C/C++ futtató környezetének biztosítja, amely aztán meghívja a main-t.



9. Speciális esetek: beágyazott rendszerek és GUI alkalmazások

  • Egyes platformokon (például Windows GUI programokban) nem közvetlenül a main a belépési pont, hanem például a WinMain.
  • Beágyazott rendszerekben az entry point egy alacsonyabb szintű cím vagy függvény, amely a hardver reset utáni állapotától indul.
  • C++ szabványos alkalmazásokban azonban a main az általános entry point.



10. Összefoglalás

  • A program entry pointja a main függvény.
  • Ez a függvény a program futásának kezdőpontja.
  • main visszatérési értéke a program kilépési kódja.
  • A main két szabványos formája van: argumentum nélküli és argumentumokat fogadó.
  • Az operációs rendszer biztosítja, hogy a program ezt a pontot hívja meg futtatáskor.
  • A program futása előtt és után globális objektumok konstruktorai/destruktorai futnak le.