[C++] Brak biblioteki iostream.h?

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Keretsoh
Piegowaty Guziec
Piegowaty Guziec
Posty: 23
Rejestracja: 05 paź 2010, 18:16
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Unity
Architektura: x86

[C++] Brak biblioteki iostream.h?

Post autor: Keretsoh »

Niedawno zacząłem naukę C++. Zainstalowałem na moim ubuntu 12.04, g++. Gdy piszę jakikolwiek program (choćby najprostszy - na dodawanie dwóch liczb), kompilator wyrzuca błąd:

Kod: Zaznacz cały

dodaj.cpp:1:22: fatal error: iostream.h: Nie ma takiego pliku ani katalogu
compilation terminated.
Szukałem rozwiązania w google - wystarczy usunąć ".h" z iostream. Niestety, mój nauczyciel wymaga pisania tego, a ja nie wiem jak to inaczej rozwiązać.
Awatar użytkownika
JSokol
Sędziwy Jeż
Sędziwy Jeż
Posty: 67
Rejestracja: 18 mar 2010, 10:57
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: Unity
Architektura: x86_64
Lokalizacja: Down under
Kontakt:

Re: [C++] Brak biblioteki iostream.h?

Post autor: JSokol »

Keretsoh pisze:Niedawno zacząłem naukę C++. Zainstalowałem na moim ubuntu 12.04, g++. Gdy piszę jakikolwiek program (choćby najprostszy - na dodawanie dwóch liczb), kompilator wyrzuca błąd:

Kod: Zaznacz cały

dodaj.cpp:1:22: fatal error: iostream.h: Nie ma takiego pliku ani katalogu
compilation terminated.
Szukałem rozwiązania w google - wystarczy usunąć ".h" z iostream. Niestety, mój nauczyciel wymaga pisania tego, a ja nie wiem jak to inaczej rozwiązać.
używanie

Kod: Zaznacz cały

#include <iostream.h>
jest przestarzałe i należy tego unikać.

Jak widać problemem nie jest używanie <iostream> tylko <iostream.h> - warto więc uświadomić nauczyciela w tym, że forma "bez .h" jest tą właściwą, wszak na geografii nikt już nie uczy, że Ziemia jest płaska ;)

Odpalając w konsoli:

Kod: Zaznacz cały

find /usr/include -name iostream*
zostanie znaleziona tylko wersja "iostream", stąd też kompilator nie wie o co chodzi gdy podaje mu się "iostream.h". Dawniej można było spotkać obydwie wersje - tj również tą z ".h", lecz była ona tylko taką zaślepką, bo w rzeczywistości jej zawartość sprowadzała się do "#include <iostream>" :)
Keretsoh
Piegowaty Guziec
Piegowaty Guziec
Posty: 23
Rejestracja: 05 paź 2010, 18:16
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Unity
Architektura: x86

Re: [C++] Brak biblioteki iostream.h?

Post autor: Keretsoh »

Z nauczycielem nie wygram - używa starych kompilatorów, a nas próbuje przekonać, że 'nie ustawiliśmy praw dostępu'.
Poza tym, czy aby na pewno nie ma żadnej różnicy między iostream.h, a samym iostream?
Używając iostream, chcąc użyć cout/cin etc, muszę używać przestrzeni nazw std. Według nauczyciela, dodając .h, nie trzeba tego używać i program działa poprawnie bez przestrzeni nazw. Prawda czy fałsz? Czy może jest to zależne od kompilatora? W szkole używamy (a właściwie będziemy używać) c++ buildera.
Awatar użytkownika
JSokol
Sędziwy Jeż
Sędziwy Jeż
Posty: 67
Rejestracja: 18 mar 2010, 10:57
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: Unity
Architektura: x86_64
Lokalizacja: Down under
Kontakt:

Re: [C++] Brak biblioteki iostream.h?

Post autor: JSokol »

Keretsoh pisze:Z nauczycielem nie wygram - używa starych kompilatorów, a nas próbuje przekonać, że 'nie ustawiliśmy praw dostępu'.
Może są jeszcze na świecie nauczyciele geografii, którzy prawią że Ziemia płaską jest, ale wtedy trzeba ich delikatnie uświadamiać, że w międzyczasie urodził się Kopernik i trochę się w tej kwestii pozmieniało.
Odnośnie poprawności <iostream> możesz się powołać na dokumentację: http://www.cplusplus.com/reference/iostream/
Keretsoh pisze:Poza tym, czy aby na pewno nie ma żadnej różnicy między iostream.h, a samym iostream?
To możesz sprawdzić sam - kiedyś sprawdzałem i dosłownie zawartość tej zaślepki "iostream.h" sprowadzała się do "#include <iostream>".
Keretsoh pisze:Używając iostream, chcąc użyć cout/cin etc, muszę używać przestrzeni nazw std. Według nauczyciela, dodając .h, nie trzeba tego używać i program działa poprawnie bez przestrzeni nazw. Prawda czy fałsz? Czy może jest to zależne od kompilatora? W szkole używamy (a właściwie będziemy używać) c++ buildera.
To też możesz sprawdzić, gdy już namierzysz na zajęciach plik iostream.h i pod "#include <iostream>" znajdzie się linijka "using namespace std;" to wszystko stanie się jasne :P
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 12 gości