Miksi ohjelmani vain vilahtaa ja sammuu kun käynnistän sen tuplaklikkaamalla Windowsissa?
Mureakuha
Jos olet luonut konsolipohjaisen projektin, tämä on täysin normaalia. Kun ohjelmasi käynnistyy, se kutsuu AllocConsole-funktiota sisäisesti saadakseen itselleen uuden konsolin. Kun ohjelmasi suoritus pääsee loppuunsa, eli normaalitilanteessa main-funktio palaa, ohjelmasi kutsuu FreeConsole-funktiota vapauttaakseen konsolin. Konsoli siis vapautetaan automaattisesti ohjelman suorituksen jälkeen, koska sitä ei enää tarvita; ohjelmasi suoritus on jo päättynyt. Vilahdus taas johtuu siitä, että tietokone on silmääsi nopeampi, ts. ohjelmasi suoritetaan niin nopeasti, että et ehdi lukemaan mahdollisia konsoliin tulostettavia tekstejä.
Tapoja kiertää tämä ongelma on useita, mutta parhaiten toimiva tapa on ajaa ohjelmasi komentokehoitteessa. Paina WIN-näppäin + R ja Windowsista riippuen käynnistä joko command.com tai cmd.exe, siirry hakemistoon jossa ohjelmasi sijaitsee ja suorita se sieltä. Toinen hyvä tapa on kutsua ennen main-funktion return-lauseketta funktiota getchar.
Yksi hyvä tapa päästä ongelmasta eroon on :
int main() { bool Running = true; while (Running) { } return 1; }
Ohjelman lopettamiseksi tarvitsee vain asettaa Running - muuttuja falseksi.
Löytyy myös yksinkertaisempi tapa jättää konsoli näytölle odottamaan että käyttäjä painaa jotakin näppäintä:
int main(){ /* Koodi tähän */ system("PAUSE"); /* Tämä jättää konsolin odottamaan että jotain näppäintä painetaan */ return 0; }
