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?
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.
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.
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...)
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 :)
Tosiaan Metabolixille iso kiitos ja plussa selkeyttävästä vastauksesta :)
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.
Gwaur: Missäs tuollainen ohje lukeepi? Olisi mukava tietää :D
viznut-pappa meitä irkin puolella ainakin joskus asiasta valisti :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.