Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Kääntäjä pukkaa virhettä (Aloittelevan ongelmia)

Sivun loppuun

Minä [10.12.2005 15:19:11]

#

Nyt meikäläinen alkaa suoltamaan tyhmiä kysymyksiään tänne. Tie tuntuu olevan turhan kivikkoinen :)

Käänsin ensimmäistä ohjelmaani:

#include <iostream.h>
int main()
{
  cout << "Hello World!\n";
  return 0;
}

Ja heti palauttaa virheen:

Building file: hello.cc ...
g++       "hello.cc"     -o "hello"
In file included from /usr/include/c++/4.0.2/backward/iostream.h:31,
                 from hello.cc:1:
/usr/include/c++/4.0.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
Completed ... successful
Total time taken: 1 secs

Missä vikaa? Eikö se oikein pidä tuosta iostreamista? :O Warninghan se vain on ja kyllä toimii mutta silti tahtois tuosta eroon.. IDE on (Ideksikö sitä sanotaan?) Anjuta alustana Ubuntu linux.

Toinen ihmetyksen aihe on tiedostopäätteet. .C .CC .H .CPP? :O Anjuta tarjoaa C++ koodille tiedostopäätettä .cc mutta muualla olen nähnyt .cpp-liitettä joka tuntuisi kyllä loogisemmalta.. Mitä eroa noissa on?

Metabolix [10.12.2005 15:43:15]

#

Kuten täällä on jo aika monessa aiheessa kerrottu, niin iostream.h on vanhentunut otsikko (kuten tuo varoitus sanoo). Nykyään käytetään iostream-otsikkoa (ilman .h:ta). Siinä cout ja muut oliot on siirretty std-nimiavaruuteen. Toiminta siis tällainen:

#include <iostream>

// Tapa 1:
// Otetaan käyttöön koko std-nimiavaruus, jolloin kaikki otimii kuten ennenkin.
using namespace std;
// =>
cout << "Moi!" << endl;

// Tapa 2:
// Otetaan käyttöön std-nimiavaruudesta tarvittavat osat, jolloin ne toimivat aivan suoraan.
using std::cout;
using std::endl;
// =>
cout << "Moi!" << endl;

// Tapa 3:
// Kirjoitetaan joka kerta se std, kun käytetään tiettyjä olioita.
std::cout << "Moi!" << std::endl;

Ensimmäinen on helpoin, viimeinen välttää takuulla sekaannukset, keskimmäinen on yleisesti ottaen helppo ja hyvä tapa.

Tiedostopäätteistä: C on puhtaan C-kielisen tiedoston pääte, jolloin se oletuksena käännetään C-kääntäjällä eikä C++-kääntäjällä. Cpp on tosiaan looginen tapa merkitä C++, mutta myös CC on käytössä, ja molemmat yleensä päätyvät C++-kääntäjän käsittelyyn. H niinkuin Header elikkä otsikkotiedosto. Ideana on, että niitä mikään IDE ei oletuksena käännä, vaan niitä vain liitetään mukaan. Mikäpä sitä estäisi käyttämästä samaan tarkoitukseen vaikka .log-tiedostoa, jos se sattuu huvittamaan.

Deewiant [10.12.2005 17:01:56]

#

Metabolix kirjoitti:

Tiedostopäätteistä: C on puhtaan C-kielisen tiedoston pääte, jolloin se oletuksena käännetään C-kääntäjällä eikä C++-kääntäjällä.

Muistetaan isojen ja pienten kirjainten erot: .c on C-kielisen tiedoston pääte, .C on C++-kielisen tiedoston pääte. Tällaista keinoa erotella C ja C++ ei kyllä kovin usein näe.

Vielä eräs mainitsematon C++-tiedostopääte on .cxx.

Metabolix [10.12.2005 17:11:44]

#

Deewiant: Se taas riippuu järjestelmästä. Käsittääkseni FAT12-tiedostonimet eivät oikeasti voi sisältää pieniä kirjaimia ollenkaan, mitäs sitten tehdään? (Se on sitten eri asia, mitä sinnekin nykyään tungetaan...)

TeeVee [10.12.2005 17:52:19]

#

Kun tulevaisuudessa toivottavasti FAQ päivittyy, niin siitä voitaisiin tehdä hieman laajempi C++:n osalta, koska tälläisetkin kysymykset ovat kohtalaisen tavallisia. Metabolix olisi hyvä, plussaa hänelle uudeksi kirjoittajaksi :)

Minä [12.12.2005 15:47:50]

#

Tosiaan Metabolixille iso kiitos ja plussa selkeyttävästä vastauksesta :)

Gwaur [12.12.2005 17:02:30]

#

Kuuleman mukaan C++-sorsatiedostolle paras pääte olisi .cxx johtuen siitä, että 1: CPP on C PreProcessor, 2: CC on C Compiler ja 3: x on kuin vinoon kumottu plussa.

TeeVee [14.12.2005 20:55:00]

#

Gwaur: Missäs tuollainen ohje lukeepi? Olisi mukava tietää :D

Blaze [14.12.2005 23:25:25]

#

viznut-pappa meitä irkin puolella ainakin joskus asiasta valisti :)


Sivun alkuun

Vastaus

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

Tietoa sivustosta