Nie chcę dyskutować o C ++ ani żadnym języku programowania! Chcę tylko wiedzieć, co robię źle z Linuksem Ubuntu przy kompilacji helloworld.cpp!
Uczę się C ++, więc moje kroki to:
otwórz hello.cpp w vimie i napisz to
#include <iostream.h>
int main()
{
cout << "Hello World!\n";`
return 0;
}
Więc potem spróbowałem tego w terminalu
g++ hello.cpp
I wyjście jest
hello.cpp:1:22: fatal error: iostream.h: No such file or directory
compilation terminated.
Co sugerujesz? Każdy przydatny przewodnik krok po kroku dla mnie? Dzięki!
g++
w Ubuntu) nie akceptuj tego.Odpowiedzi:
Powinieneś używać
#include <iostream>
, nieiostream.h
; .h forma jest bardzo stare i nieaktualne od lat.Możesz przeczytać więcej, niż prawdopodobnie chcesz wiedzieć na formularzach .h vs nie- h tutaj: http://members.gamedev.net/sicrane/articles/iostream.html
(Plus, powinieneś napisać
std::cout
lub mieć linię, wusing namespace std;
przeciwnym razie twój następny błąd będzie polegał na tym, że kompilator nie znajdzie definicjicout
.)źródło
iostream.h
w moim systemie. W rzeczywistości pliki nagłówkowe C ++ są instalowane przez libstdc ++ - dev , który jest wymagany przez pakiet kompilatora C ++ g ++ , który z kolei jest wymagany przez niezbędne do kompilacji . Więc nie, nie potrzebujesz kompilacji niezbędnej do kompilacji prostych programów w C ++;g++
wystarczy zainstalować pakiet.cout
pracy bezstd::
prefiksu . Nawet wiele instrukcji (bez ) jest ogólnie lepszych, ponieważ nie wprowadzasz identyfikatorów z przestrzeni nazw, których nie chcesz i mogą powodować konflikty z nazwami we własnym programie.using std::cout;
using namespace std;
using
namespace
std
Powinieneś zmienić
iostream.h
naiostream
. Otrzymałem również ten sam błąd, co ty, ale kiedy zmieniłemiostream.h
na justiostream
, działał poprawnie. Może to też zadziała dla ciebie.Innymi słowy, zmień wiersz z napisem:
Zamiast tego powiedz to:
Standardowe pliki nagłówkowe biblioteki C ++, jak zdefiniowano w standardzie, nie mają
.h
rozszerzeń.Jak wspomniano w odpowiedzi Riccardo Murri , będziesz musiał również zadzwonić
cout
pod jego pełną nazwąstd::cout
lub mieć jeden z tych dwóch wierszy (najlepiej poniżej twoich#include
dyrektyw, ale powyżej drugiego kodu):Drugi sposób jest uważany za preferowany, szczególnie w przypadku poważnych projektów programistycznych, ponieważ wpływa tylko na
std::cout
wprowadzanie wszystkich nazw wstd
przestrzeni nazw (niektóre z nich mogą potencjalnie kolidować z nazwami używanymi w programie).źródło