Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++ ja kääntäjien erot

Sivun loppuun

karvinen [13.09.2005 20:23:37]

#

Tässä kaikista ensimmäinen koodinpätkä, millä lienee kaikki aloittaneet.

Ei vain toimi...
Onko kyse kääntäjäkohtaisesta eroista.
Kääntäjänä mikkisoftan visuall c++ 6.0

Errori:
Compiling...
hello1.cpp
c:\program files\microsoft visual studio\myprojects\hello1\hello1.cpp(8) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Error executing cl.exe.

hello1.exe - 1 error(s), 0 warning(s)

#include <iostream.h>

void main()
{

	cout << "hello world!\n";
}

Deewiant [13.09.2005 20:28:31]

#

Kyse voi myös olla siitä, että kääntäjä ei syö noin vanhentunutta koodia. Kummallinen virheilmoitus ei sano ainakaan minulle mitään, kokeilepa modernimpaa muotoa:

#include <iostream>

int main() {
    std::cout << "hello world!\n";
    return 0;
}

Nykyään se on tosiaan iostream eikä iostream.h, mikä tarkoittaa myös, että se on std::cout eikä cout. Ja void main -muoto on aikojen alusta asti ollut väärä - sen täytyy kuulua int main, mikä tarkoittaa että pitää myös palauttaa jotain: return 0.

karvinen [13.09.2005 20:38:09]

#

Eli 1995 painettulla kirjalla saa heittää vesilintua...

Tuolla antaa erroria


hello1.cpp
c:\program files\microsoft visual studio\myprojects\hello1\hello1.cpp(7) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Error executing cl.exe.

hello1.exe - 1 error(s), 0 warning(s)

rndprogy [13.09.2005 20:53:41]

#

Kokeile näin

#include <iostream>

using namespace std;
int main() {
    cout << "hello world!\n";
    return 0;
}

edit: Jaahas. hups. Deewiant ehti sittenkin huomata mokani :)

Deewiant [13.09.2005 20:55:49]

#

rndprogy kirjoitti:

Tuohon pitää vielä lisätä ennen std::coutia

using namespace std;

Ööh, eikä pidä. using namespace std tarkoittaa että std::-määritelmää ei tarvitse käyttää, sillä kaikki std-nimiavaruudesta vedetään globaaliksi. std:: taas tarkoittaa, että nimenomaan sitä seuraava asia (tässä tapauksessa cout-olio) on std-nimiavaruudessa.

Ja nuo ongelmasi johtuvat tosiaan kääntäjästä, jos tuokaan ei käänny. Siinähän Googlailet, ellei joku VC++:aa tunteva satu paikalle.

Metabolix [13.09.2005 20:59:47]

#

No onneksi joku VC++:aa tunteva sattuu paikalle :)
Precompiled header -ongelma on "Microsoftin erikoinen." Mene projektin asetuksiin ja etsi kohta "Precompiled Headers", poista käytöstä.

VC++ 7.1:ssä: Project => Properties => C/C++ => Precompiled Headers => Create/Use precompiled header, arvoksi "Not Using Precompiled Headers"

karvinen [13.09.2005 21:03:11]

#

Eli suositteletteko aloittelemaan koodausta jollakin muulla kääntäjällä.

Mulla olisi kyllä tuossa toisella kiintolevyllä linux ja c++ valmiina.

Taitaa olla mikkisoftalla oma c++ kielikin ;)

Meitsi [13.09.2005 21:28:14]

#

Lataappa vaikka Devc++. Tulee hyvä IDE ja kääntäjä mukana.

Zach [13.09.2005 21:47:19]

#

Dev-c++ on ihan hyvä perus-IDE - selkeä ja helppokäyttöinen. Olen viime aikoina kokeillut myös Code::Blocks'ia, joka vaikuttaa todella mukavalta. Dev-c++:nkin käyttämän Mingw-kääntäjän lisäksi siitä löytyy tuki mm. Watcomin, Borlandin ja Micro$oftin kääntäjille.

karvinen [13.09.2005 21:55:13]

#

Dev-c++ kääntäjän pääsin alkuun...
sain tehtyä hello... ohjelman

#include <iostream>

using namespace std;
int main() {
    cout << "hello world!\n";
    return 0;
}

Ongelmaksi jäi vain se, että kun ohjelman ajaa, se pysyy näytöllä noin 0,01sekuntia ja sulkeutuu itsestään.

Metabolix [13.09.2005 22:03:18]

#

http://pp.kpnet.fi/blaze/codefaq/#justflashes
Ja ennen kuin kysyt vielä ääkkösongelmastakin, käytä hakua :)

esakom [14.09.2005 08:34:01]

#

niin ja tuon linkin ohjeen (jonka metabolix antoi) lisäksi yksi kikka on linkittää mukaan stdlib:

#include <stdlib.h>

ja sitten ennen mainin loppua lisätä pause-systeemikutsu:

system("PAUSE");

rutkis [14.09.2005 08:53:54]

#

Defaulttina studio taitaa käyttää "precompiled headers"-optiota, mutta se ei luo niitä ensimmäisen käännöksen aikana ilman manuaalista generointia. "Hello World"-ohjelmassa niillä ei toki ole käyttöäkään.

Metabolix [14.09.2005 11:38:18]

#

Lainatakseni Blazen viisautta:

Blaze kirjoitti:

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.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta