Kirjoittaja Aihe: C++ ongelma kääntäjän kanssa (Ratkaistu)  (Luettu 2789 kertaa)

Scionar

  • Käyttäjä
  • Viestejä: 53
    • Profiili
C++ ongelma kääntäjän kanssa (Ratkaistu)
« : 05.06.08 - klo:01.00 »
Olen tässä kääntäjällä yrittänyt kääntää C++:lla koodattua hello.cpp tiedostoa.

Lainaus käyttäjältä: hello.cpp
// Ohjelma tulostaa tekstin Hello world!
   #include <iostream.h>
   int main(void)
   {
     cout << "Hello world!" << endl;
     return 0;
   }

Olen laittanut päätteeseen koodin

Lainaus käyttäjältä: Koodi
g++ -o hello hello.cpp

, mutta tuloksena se sysää tekstin:

Lainaus käyttäjältä: Pääte
In file included from /usr/include/c++/4.2/backward/iostream.h:31,
from hello.cpp:2:
/usr/include/c++/4.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.

En tajua itse mitä ohjelma tarvitsee ja tarvitsen apua mitä pitää tehdä.
« Viimeksi muokattu: 10.06.08 - klo:23.40 kirjoittanut Scionar »

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: C++ ongelma kääntäjän kanssa
« Vastaus #1 : 05.06.08 - klo:02.35 »
En tajua itse mitä ohjelma tarvitsee ja tarvitsen apua mitä pitää tehdä.

Varoitus kertoo selvästi että käytät vanhentunutta header-määritystä ja kehoittaa käyttämään muotoa <iostream> muodon <iostream.h> sijasta.

Scionar

  • Käyttäjä
  • Viestejä: 53
    • Profiili
Vs: C++ ongelma kääntäjän kanssa
« Vastaus #2 : 05.06.08 - klo:23.00 »
Varoitus kertoo selvästi että käytät vanhentunutta header-määritystä ja kehoittaa käyttämään muotoa <iostream> muodon <iostream.h> sijasta.

Miten tämän kyseisen headerin pystyisi päivittämään?

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: C++ ongelma kääntäjän kanssa
« Vastaus #3 : 05.06.08 - klo:23.34 »
Varoitus kertoo selvästi että käytät vanhentunutta header-määritystä ja kehoittaa käyttämään muotoa <iostream> muodon <iostream.h> sijasta.

Miten tämän kyseisen headerin pystyisi päivittämään?

Ei sinun tarvitse mitään header-tiedostoa päivittää mutta lähdekoodissasi oleva include-rivi pitää korjata oikeaksi.

Koodia: [Valitse]
#include <iostream>

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Vs: C++ ongelma kääntäjän kanssa
« Vastaus #4 : 06.06.08 - klo:01.05 »
käytännössä tuo 'uuden' headeirin iostream-käyttäminen tarkoittaa, että kaikki sen sisältö on nimiavaruudessa std. täten ohjelmaa pitää muuttaa jollain seuraavista tavoista (tai niiden yhdistelmällä):
Koodia: [Valitse]
#include <iostream>
using namespace std;

int main(void)
{
     cout << "Hello world!" << endl;
     return 0;
}

tätä tapaa käytetään usein esimerkeissä ja se onkin 'helpoin' tapa, mutta samalla mukaan tuodaan koko nimiavaruus std, jota ei puolestaan pidetä kovin hyvänä käytäntönä.

Koodia: [Valitse]
#include <iostream>
using std::cout;
using std::endl;

int main(void)
{
     cout << "Hello world!" << endl;
     return 0;
}

yksittäisten komentojen tuominen on ihan hyvä tapa, mutta lista koodin alussa voi kasvaa hitusen pitkäksi ja syntaksi voi olla hieman hämäävää käytettäessä useita eri nimiavaruuksia.

Koodia: [Valitse]
#include <iostream>
int main(void)
{
     std::cout << "Hello world!" << std::endl;
     return 0;
}

nimiavaruuden eksplisiittinen kirjoittaminen joka komennon yhteydessä puolestaan vaatii hitusen lisää kirjoittamista ja kasvattaa aavistuksen koodin pituutta.

vaikka noista kaikista on hitusen ylimääräistä työtä ja vaikka vanhan c++-koodinkin saa halutessaan kääntymään, kannattaa 'uusi' tapa ehdottomasti opetella suoraan. nimiavaruudet ja uudet headerit ovat vaan oikeasti hyvä juttu.

tuo uusi on hipsuissa, koska oikeasti nuo ovat olleet käytettävissä helposti kymmenen vuotta, vaikka standardi onkin hitusen uudempi. jos lähde josta yrität opetella c++:aa käyttää vielä vanhoja headereita, on minusta syytä katsella jotain ihan muuta lähdettä opiskeluun. c++:aan on tullut uuden standardikirjaston myötä paljon uusia ja hyödyllisiä juttuja noihin vanhoihin verrattuna.

[edit]
penteleen copy-paste :) kiitokset mgronberille huomaamisesta. listaus korjattu.
« Viimeksi muokattu: 06.06.08 - klo:01.12 kirjoittanut janne »
Janne

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: C++ ongelma kääntäjän kanssa
« Vastaus #5 : 06.06.08 - klo:01.09 »
Viimeiseen koodiesimerkkiin jannella lipsahti <iostream.h> vaikka siinäkin tulisi olla pelkkä <iostream>.