mä en ymmärrä erästä asiaa että joissain esimerkeissä on näin #include <iostream.h> ja joissain #include <iostream> mitä eroa niis on??mulla on dev-c++ ja se antaa virheen ku pistän <iostream.h>.. ja muuten kysyisin viel sen että ku yritän esimerkiksi kirjoittaa legendaariset sanat HEllo World niin se ikkuna avautuu mutta se häviää heti siitä näkyy vaan vilaus. mitä voin tehdä jotta se ei häviä? kiitos
siina kirjoitti:
se ikkuna avautuu mutta se häviää heti siitä näkyy vaan vilaus. mitä voin tehdä jotta se ei häviä?
#include<iostream.h> on C:n tapa sisällyttää otsikkotiedosto. C++ standardin mukainen on pelkkä #include<iostream>.
P.S. Etsi ja avaa iostream-tiedosto. Sisältö ei ole välttämättä mikään erityisen monimutkainen.
Tuo selostus meni minusta aavistuksen pihalle (tai oli vähän turhan yksinkertaistettu). Aivan samalla tavalla headerit liitetään molemmissa. Oikeasti syy on siinä, että aiemmasta iostream.h-tiedostosta puuttuu std-nimiavaruus, namespace std
, eli kaikki määritellyt muuttujat ovat samassa maailmassa. Yhteensopivuuden takia uuden otsikon nimestä jätettiin .h pois. Kyseinen tiedosto löytyy juuri tuon nimisenä (iostream). Mingw:n C++:n include-kansiossa kyllä on backward-kansio, josta löytyy korvike vanhalle iostream.h:lle. Samalla tavalla kävi kaikille muillekin C++:n otsikoille. Ilmeisesti tämän jälkeen tehtiin kaikista C:n otsikoista samanlaiset päätteettömät versiot, jotka itse asiassa liittävät ohjelmaan noita alkuperäisiä versioita. Esimerkiksi cfloat-otsikon merkittävä sisältö on #include <float.h>
Joo, tyhmä kysymys, mutta miten mä saan avattua sen koodin siihen ikkunaan, missä näkyy se koodin tulos? :?
Kysymys ei (melkein) koskaan ole tyhmä, kunhan se vaan on ymmärrettävä...Tarkoitatko todella, että haluat valmiin ohjelman ikkunassa näkyvän saman ohjelman alkuperäisen lähdekoodin? Tämä onnistuisi ainoastaan tulostamalla se näytölle joko valtavalla määrällä tulostuskäskyjä tai kopioimalla erillisestä lähdekooditiedostosta; ainakaan .exe-tiedostosta ei saa c++:aa mitenkään irti. En kyllä keksi tuollaiselle toiminnalle mitään perustelua, vai ymmärsinkö edes sinne päin?
Zach kirjoitti:
Tämä onnistuisi ainoastaan tulostamalla se näytölle joko valtavalla määrällä tulostuskäskyjä
Ei onnistuisi. Tulostuskäskyt olisivat myös osa ohjelman koodia, joten nekin pitäisi tulostaa. Sitten niiden tulostamiseen käytettävä koodi pitäisi myös tulostaa jne. Siitä ei tulisi loppua ollenkaan.
Zach kirjoitti:
tai kopioimalla erillisestä lähdekooditiedostosta
Tämä sen sijaan onnistuu. Siis jos tässä nyt sitä edes haettiin.
"Kysymys ei (melkein) koskaan ole tyhmä, kunhan se vaan on ymmärrettävä...Tarkoitatko todella, että haluat valmiin ohjelman ikkunassa näkyvän saman ohjelman alkuperäisen lähdekoodin? Tämä onnistuisi ainoastaan tulostamalla se näytölle joko valtavalla määrällä tulostuskäskyjä tai kopioimalla erillisestä lähdekooditiedostosta; ainakaan .exe-tiedostosta ei saa c++:aa mitenkään irti. En kyllä keksi tuollaiselle toiminnalle mitään perustelua, vai ymmärsinkö edes sinne päin?"
Eikun sitä vaan, että mä en tiedä, miten mä saan avattua koodini exe-tiedostoon, eli että mä näkisin sen koodin tuloksen? Toivottavasti ymmärsit. Ja minulla sitten on se dev-c++...
Eli haluat simppelisti avata valmiin ohjelman? Execute-valikosta klikkaat Compile&Run tai painat F9:ä, jolloin kääntäjä kääntää koodin (=compile) ja avaa valmiin exen.
Kiitti, joo tota minä tarkoitinkin... ;)
(Mä en jostain syystä pysty muokkaamaan edellistä viestiä...!)
Nyt siihen tulee sellainen virheilmoitus kuin: "Source file not compiled". Ja ei siinä mielestäni mitään vikaa ole, jos se koodi on:
#include <stdio.h> int main (void){ printf("Hello World!"); return 0; }
Viestin muokkausaika on tunti lähettämisestä.
Tuo ilmoitus tarkoittaa, että se ei ole jostain syystä kääntänyt sitä lähdekoodia. Antaako se siihen alas jotain logia kääntöprosessista? Siitä selviää, missä kohtaa menee vikaan.
Eipä anna... Siellä alhaalla on kyllä sellainen, kuin compiler ja compile log...
Ja sieltä compiler-kohdasta löytyy myös tälläinen: Message: Määriteltyä tiedostoa ei löytynyt.
Onhan sulla projekti tehtynä (file->new->project)- yksittäisiä tiedostoja ei aina voi kääntää. Jos on, niin poista projektin kansiosta kaikki siihen liittyvä (mm. makefile ja .o-päätteinen tiedosto) lukuunottamatta .cpp- ja .dev-tiedostoja ja yritä kääntää uudestaan.
Ei se vaan onnistu niinkään... >:( Poistanko mä myös muut yksittäiset tiedostot?
EDIT: Mä löysin tälläisen tekstipätkän dev-cpp: n FAQ sta:
I am using Windows 98 and I cannot compile
Some users have report that you need to apply several patches to your system. Here is the list of them, they can be found on Microsoft Windows 98 download site
47569us.exe - labeled as Windows98SE shutdown
dcom98.exe - see also this page
DX81eng.exe - latest version of DirectX (this is 11MB, and cannot be uninstalled without reinstalling Windows 98. You might want to try this one last in case the other above didn't work, as it should update many parts of the system).
Mitäs tää voisi tarkoittaa, mulla on 98...
Ei noilla patcheilla ja Directx:llä mitään vaikutusta tähän pitäis olla. Yritäs vielä tehdä uus kansio, siirtää tiedosto.cpp ja tiedosto.dev sinne ja kääntää.
Mitä mä niihin koodaan? Ja tarkoitatko sillä sanalla kääntää sitä, että mä katon koodin tuloksen? Nyt siihen ei tule muuten enään sitä virhesanomaa, mutta sinne alas tulee kuitenkin viesti "Määritettyä tiedostoa ei löydy"
Tai sitte se voi johtua siitä että mukana ei ole kääntäjää. Minulle on käynyt nuin :)
Mikä versio sulla on Dev-cpp:sta?
Zach kirjoitti:
Yritäs vielä tehdä uus kansio, siirtää tiedosto.cpp ja tiedosto.dev sinne ja kääntää.
Niin, otat siis uuden projektin, lisäät siihen uuden tiedoston(File->New->Source file), kirjoitat siihen ton Hello World-koodin, tallennat tiedoston ja sitten "katot koodin tuloksen" eli käännät. ;D
Dev-C++ 4.9.9.2 on mun versio.
Nytten, siinä ei ole enään edes sitä compile & run, tai siis sitä ei voi valita enään...
Mutta latasitko version, jossa on kääntäjä?
Dev-cpp:n kansiossa pitäisi olla bin-kansio, jossa on on reilun 8 megan edestä pääasiassa Mingw-kääntäjään liittyviä tiedostoja. Jos ei ole, lataa vaikka koko paketti osoitteesta http://prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe
Okei, mä teen siis nyt näin:
Mä poistan mun aikaisemman version kokonaan, ja lataa tuon yllä olevan linkin koneelleni. Kiitti, kun jaksatte neuvoa! :) Se versio on sitten Dev-C++ 5 beta 9 release (4.9.9.2), tässä asentaessa kun katson... Jos se mitään kertoo...
Noniin, ei toimi edelleenkään se compile & run, eikä enään voi tehdä edes uutta projektia... Hmm...
EDIT: On joo Bin-kansio, jossa on 32 objektia. Oiskohan mulla vain väärät asetukset tmv...
Tämmöinen viesti löytyi sitten compile logista:
Compiler: Default compiler
Executing g++.exe...
g++.exe "C:\WINDOWS\Työpöytä\Dev-Cpp\koe.cpp" -o "C:\WINDOWS\Työpöytä\Dev-Cpp\koe.exe" -I"C:\DEV-CPP\lib\gcc\mingw32\3.4.2\include" -I"C:\DEV-CPP\include\c++\3.4.2\backward" -I"C:\DEV-CPP\include\c++\3.4.2\mingw32" -I"C:\DEV-CPP\include\c++\3.4.2" -I"C:\DEV-CPP\include" -L"C:\DEV-CPP\lib"
Execution terminated
Mulla on myös sellainen kansio, kuin mingw32, jossa sitten erikseen bin-kansio, jossa on 9 objektia...
Ja sitten vielä kysymys:
Eikös system("CLS"); tyhjennä ruudun kokonaan?
Mitä tekee system("PAUSE");?
Onko sellaista, kuin system("PAUSE > NUL");? Mitä se tekee?
Ja laitetaan nyt vielä tänne, että se toimiikin nyt täydellisesti, muttei vieläkään compile run??!!
Siihen tulee se sama vanha tuttu Project is not compiler...
flip92 kirjoitti:
Eikös system("CLS"); tyhjennä ruudun kokonaan?
Eikun se tulostaa "bash: CLS: command not found"
flip92 kirjoitti:
Mitä tekee system("PAUSE");?
Tulostaa "bash: PAUSE: command not found"
flip92 kirjoitti:
Onko sellaista, kuin system("PAUSE > NUL");? Mitä se tekee?
Tallentaa tekstin "bash: PAUSE: command not found" tiedostoon NUL.
system():ä ei kannata käyttää. Yleensä tuollaisille löytyy ihan yleisesti toimivat vastineet.
Okke, no mikäs sitten tyhjentää sen ruudun?
Voit esimerkiksi käyttää NCursesia/PDCursesia johon löytyy opas putkan opasalueelta. Köyän hiemen versio on tulostaa kasa rivinvaihtoja \n jolloin konsoli "tyhjenee".
Ja noista system()-funktioista, ne suorittavat (tai yrittävät suorittaa) parametrina annetun komennon, ja jos ks. komentoa ei löydy niin hommahan ei toimi. Siksi pitäisi käyttää parempaa tapaa kuten cursesia.
Minä kirjoitti:
Ja laitetaan nyt vielä tänne, että se toimiikin nyt täydellisesti, muttei vieläkään compile run??!!
Joo, elikkäs tulipas epäselvästi... Tässä tarkoitan siis sitä, ettei mun dev-C++ :ssassa ole muuta vikaa, kuin se, että se ei käännä sitä..... <:(
Hehe, nyt toimii, vain väläyksenä*...
Mulla oli sitten kuitenkin ne väärät asetukset...(http://csjava.occ.cccd.edu/~gilberts/devcpp5/)
*Mulla on suomenkielinen hakemisto, missä tämä siis sijaitsee? Avaa uusi komentorivi (Windows 9x:ssä Start > Run > command, NT:ssä Start > Run > cmd), vaihda hakemistoon, jossa ohjelmasi on ja aja kirjoittamalla ohjelman nimi
Eipä ole enään bugista ongelmaa... (latasin koko ohjelman uusiksi)
Enpä ois uskonu, että Start > Runin kääntäminen kenellekään tuottaisi ongelmia o_O
Käynnistä > Suorita
Jaa, no mulle se tuottaa :P
Mitens mä pääsen nyt sitten kattomaan sen koodini tuloksen ilman, että se vaan vilahtaa? Mä en nyt oikein tajua..?
PS: Se vilahtaa, vaikka mä avaankin sen suorita - osiosta
Tarkoitus on siis avata terminaali-ikkuna ("MS-DOS Kehote", "Komentokehote") ja suorittaa se ohjelma siinä.
Okei, katotaan. Sorkke, että oon näin tyhmä ;P
Pitäskö siihen laittaa se tiedoston sijainti? Siinähän ei toimi Ä eikä Ö, joten jos tiedosto on C:\WINDOWS\työpöytä\Dev-Cpp\..... niin se ei toimi
Ja siinä alussahan on C:\WINDOWS>, niin eikö se tarkoita, että sen alun (mikä tuossa nyt lukee ) voi jättää pois?
No okei, pikakurssi Windowsin komentorivin käytöstä:
C:\Windows> siinä alussa kertoo, että olet hakemistossa c:\Windows.
cd C:\Temp vaihtaa nykyisen hakemiston c:\Temp:ksi..
cd system32 vaihtaa nykyisessä työhakemistossa olevaan system32 -nimiseen hakemistoon.
cd .. vaihtaa yhtä hakemistoa ylöspäin, ts. jos olet tällä hetkellä c:\Windows:ssa, nykyiseksi työhakemistoksi tulee c:\
Ohjelma ajetaan kirjoittamalla ohjelman nimi. .exe -loppu on vapaaehtoinen. Ohjelma pitää olla joko %PATH% -ympäristömuuttujan sisältämässä hakemistossa tai nykyisessä hakemistossa.
Ts. jos haluat ajaa c:\Documents and Settings\flip92\koodaus -hakemistossa olevan hello.exe:n, komennat
cd "c:\Documents and Settings\flip92\koodaus"
hello
Mitä ääkkösiin tulee, niin niiden pitäis toimia, joku Windows-käyttäjä kertokoot, mikseivät, ja miten ne saa kuntoon.
Hmmm... Merkkiä ":" ei löydy mistään...
Blaze kirjoitti:
Ohjelma pitää olla joko %PATH% -ympäristömuuttujan sisältämässä hakemistossa tai nykyisessä hakemistossa.
%PATH% - ympäristömuuttuja? Mikä se on? Miten teen oman hakemiston? Olen ihan (lähes) pihalla...
flip92 kirjoitti:
Hmmm... Merkkiä ":" ei löydy mistään...
Arvaan: shift+ö
flip92 kirjoitti:
%PATH% - ympäristömuuttuja? Mikä se on?
Mietin kahesti, kannattiko tuota mainita. Ei ilmeisesti olis. Unoha se, oleellisempi asia oli se jälkimmäinen.
flip92 kirjoitti:
Miten teen oman hakemiston?
mkdir munhakemisto
Noin, nyt olen tehnyt sen yksinkertaisen hakemiston, entäs sitten?
Tästä ketjusta alkaa jo kadota järki.
Ilmeisesti haluat siis siirtyä kansioon "C:\WINDOWS\Työpöytä\Dev-Cpp\", vai kuinka? Silloin kirjoitat komentokehotteeseen näin:
cd C:\WINDOWS\Työpöytä\Dev-Cpp
Sen jälkeen voit ajaa ohjelmasi (jos se on kääntynyt) kirjoittamalla sen nimen.
Miksi muuten halusit tehdä uuden kansion? Ja onnistuuhan se ilmankin komentokehotetta :D
Miten mä sitten käytän Ä :tä ja Ö :tä? :?
Niinhän mä haluaisinkin tehdä...
No helpoimmalla pääset, kun siirrät tuon työpöydällä olevan kansion jonnekin muualle ä:n ja ö:n ulottumattomiin. Vaikkapa "C:\Ohjelmointi" tai jotakin vastaavaa. Tai sitten voit ruveta sörkkimään config.sys- ja autoexec.bat-tiedostoja, että saat koodisivuasetukset kohdalleen.
Niin pääsenkin...
Laitoin hakemistoon C:\Dev-Cpp
ja nyt se toimii...
En viitsinyt tehdä uutta aihetta tästä...
Nyt olen huomannut sellaisen jutun, että Dev-Cpp EI hyväksy mm. cin ja cout komentoja. Siitä johtu suuriksi osiksi se, ettei se myöskään kääntänyt koodia. Mitä teen, että se hyväksyisi sen? Eikun mun Dev-Cpp on toimiakseen vaan silloin kun se haluaa! Nyt se ei toimi. Äsken se kerran toimi, kun olin painanut sen compileen kolme kertaa...
Käytä koodin alussa(includen jälkeen) using namespace std;
#include <iostream> using namespace std; int main() { int nro; cout << "Anna numero\n"; cin >> nro; cout << nro; systen("pause"); /* Tämä toimii vain windowsissa, ja komentorivi ajossa */ return EXIT_SUCCESS; }
Joo, toi toimii, kiitti neuvosta ;)
Paitsi että siinä oli virhe: systen("pause");
Onneksi huomasin ;D
Ja jollet halua käyttää using namespace-viritelmää, niin std::cout ja std::cin coutin ja cinin tilalle ja using namespace std; voi unohtaa. Minun mielestäni tämä tapa pitää koodin selkeänä, ettei mene nimiavaruudet sekaisin.
No, mä käytän mielummin tuota using namespace std-menetelmää, mutta kokeilenhan mä myös tuota std::cout - menetelmää..
Muistaakseni kelpaa myös using std::cin;
ja using std::cout;
(ja pysyvät nimiavaruudet koossa).
Aihe on jo aika vanha, joten et voi enää vastata siihen.