Mistäs se johtuu, kun joskus tulee vastaan sellaisia sovelluksia, joita klikatessa hetken jotain tapahtuu, mutta sitten elinvoima jotenkin loppuu ja näyttää kuin sovellukseen ei olisi koskettukkaan.
Kuin tökkisi humalaista kepillä.
Mahdollisesti käyttöjärjesteläni(Win2000) vaikuttaa jotenkin asiaan.
Syy miksi tämä on täällä on se, kun "Dev-C++" -kääntäjää kokeillessani ohjelma, joka kääntyy ja linkittyy ihan kivasti, muuttuu elottomaksi.
Bugi koodissa?
Niin, esimerkiksi
while (true) {/*Tyhjä lause*/}
Itselleni tulee aina silloin tällöin jotain, joiden ehto on aina tosi.
Ei ainakaan pitäisi olla. Näinkin monimutkainen ei toimi.
Välähtää vain. Ei jää edes latamaan.
#include <stdio.h> int main(void) { printf("Heipä hei"); return(0) ; }
Sovelluksesi vain välähtää, koska se suoritetaan ja heti suljetaan. Lisää vaikka getch() tuonne ennen returnia ja #include <conio.h> alkuun niin toimii.
Dev-C++:ssaa käynnistäessä valitaan ensin minkä halutaan tehdä. Olin aina valinnut Windows Applicationin, mutta nyt kokeilin Console App. ja sain toimimaan alla olevalla listauksella. Näemmä konsolina toteutettuna koodi toimii.
Joku siinä WinApplissa nyt tyrii, mutta kiitti teille kumminkin.
Olennaista on, että nyt pääsen kokeilemaan koodeja käytännössä.
#include <stdio.h> #include <stdlib.h> int main() { printf("Heipä hei\n"); system("PAUSE"); return(0) ; } //Heipä hei //Paina jotain näppäintä...
System("Pause"):a ei minun tietääkseni pitäisi käyttää, koska se ei kuulemma toimi kaikilla järjestelmillä. Ainakin tällaisen käsityksen väkisinkin saa, jos roikkuu Ohjelmointiputkan IRC-kavanalla. Siellä ja Coodauswebissä System("PAUSE") on oikea vitsi.
Siirtykää kaikki Windows-ohjelmiin, niin ei tarvitse lisätä mitään :) No kuitenkin, tuo system("Pause"); ei välttämättä ole tosiaan paras keino. Kannattaa laittaa joko cin.get(); tai getch(); Itse teen usein DOS-ohjelmistani looppaavia do .. while (x != 0); -rakenteeseen, mikä on hyvin kätevää mikäli testataan jotakin eri syötteillä.
Minäkin käytän tuota getch():iä, tai oikeastaan omaa pause()-funktiota, joka sisältää sitten:
int pause; pause = getch();
jotta ei tarvitse kirjoittaa joka funktioon erikseen määrittelyjä pausen tekemistä varten.
hunajavohveli kirjoitti:
System("Pause"):a ei minun tietääkseni pitäisi käyttää, koska se ei kuulemma toimi kaikilla järjestelmillä. Ainakin tällaisen käsityksen väkisinkin saa, jos roikkuu Ohjelmointiputkan IRC-kavanalla. Siellä ja Coodauswebissä System("PAUSE") on oikea vitsi.
Niin, System() -komennothan ovat pitkälti OS-kohtaisia, ja ovat vielä aika tehottomia (inefficient). Esimerkiksi komento System("Cls") ajaa ensin command.comin, joka ajaa taas cls.exen. Vasta kun nämä kaksi ovat suoriutuneet loppuun asti, ohjelma jatkaa. Aikamoista resurssientuhlausta siis.
OK.
"Thanks for the heads up"
...vaikka tuskinpa kukaan tulee mun monimutkaista tulostuspätkääni kyselemään toiselle OS:lle.
Aihe on jo aika vanha, joten et voi enää vastata siihen.