C ++ kaynak kodu nasıl derlenir (“iostream.h bulunamadı” hatası)?


20

C ++ veya herhangi bir programlama dili hakkında tartışmak istemiyorum! Sadece helloworld.cpp'yi derlerken linux ubuntu ile ne yaptığımı bilmek istiyorum!

C ++ öğreniyorum, adımlarım:

hello.cpp açın vim ve bunu yazın

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

Yani, ondan sonra terminalde bu denedim

g++ hello.cpp

VE çıktı

hello.cpp:1:22: fatal error: iostream.h: No such file or directory
compilation terminated.

Sen ne önerirsin? Benim için adım adım rehberiniz var mı?


2
Herhangi birinin bu soruyu konu dışı olarak kapatmak için oy kullanması durumunda: Bu gerçekten platforma özgü bir konudur, çünkü Windows için en popüler C ++ derleyicisi (Microsoft Visual C ++) bu sözdizimini kabul eder, ancak çoğu diğer derleyiciler ( g++Ubuntu'da dahil ) kabul etmeyin.
Eliah Kagan

#include <iostream> namespace std kullanarak; int main () {cout << "Merhaba Dünya"; 0 döndür; } bu işe yarayabilir ...

Yanıtlar:


43

Sen kullanmalısınız #include <iostream>değil iostream.h; .h formu çok eski ve yıldan beri onaylanmıyor.

Burada .h vs .h olmayan formlar hakkında muhtemelen bilmek istediğinizden daha fazlasını okuyabilirsiniz : http://members.gamedev.net/sicrane/articles/iostream.html

(Ayrıca, std::coutbir satır yazmanız veya bir satır yazmanız gerekir, using namespace std;aksi takdirde bir sonraki hatanız derleyici için bir tanım bulamayacaktır cout.)


4
@gabriel C ++, 1980 ortasına kadar uzanan uzun bir geçmişe sahiptir. En son (C ++ 11) bu yılın başlarında piyasaya sürülmüş ve önceki (tüm derleyicilerin bugün izlediği) 2003’e (C ++ 03) dayanan yayınlanmış birkaç standart var. Bağladığınız kılavuz bundan çok daha eski gibi görünüyor, bahsettiği derleyici yazılımından yola çıkarak (Wikipedia'ya göre, Borland Turbo C ++ 1994'te durduruldu). C ++ 03 standardına uygun bir rehber seçerseniz, kodunuz bugün mevcut olan herhangi bir Linux dağıtımı üzerinde çalışacaktır.
Riccardo Murri

1
@gabriel Sorunuz daha önce StackOverflow'ta yanıtlanmış gibi görünüyor: stackoverflow.com/questions/909323/…
Riccardo Murri

1
Ayrıca şunlara da ihtiyacınız olabilir: sudo apt-get install build-essential
david6

2
@ david6: Temel kurulum yaptım ama iostream.hsistemimde yok. Aslında, C ++ başlık dosyaları tarafından yüklenir dev - ++ libstdc C ++ derleyicisi paketi için gerekli olan, g ++ da gereklidir, yapı esansiyel . Yani, hayır, gerek yok yapı-esansiyel basit C ++ programları derlemek; g++paketi kurmak yeterli.
Riccardo Murri,

1
Sadece önek coutolmadan çalışmak için , tercih edilir . Birden fazla ifade bile (olmadan ) genellikle daha iyidir, çünkü istemediğiniz ve kendi programınızdaki isimlerle çakışabileceğiniz isimlerden tanımlayıcıları getirmezsiniz . std::using std::cout;using namespace std;usingnamespacestd
Eliah Kagan

15

Sen değişmelidir iostream.hiçin iostream. Ben de seninle aynı hatayı alıyordum, ama ben iostream.hsadece değiştiğinde iostream, düzgün çalıştı. Belki senin için de işe yarar.

Başka bir deyişle, yazan satırı değiştirin:

#include <iostream.h>

Bunun yerine şunu söyle:

#include <iostream>

Standartda tanımlandığı gibi C ++ standart kütüphane başlık dosyaları, .huzantılara sahip değildir .

Riccardo Murri'nin cevabından bahsedildiği gibi cout, tam ismiyle ismini aramanız std::coutveya bu iki satırdan birine sahip olmanız gerekir (tercihen #includedirektiflerinizin altında fakat diğer kodunuzun üstünde):

using namespace std;
using std::cout;

İkinci yol, özellikle ciddi programlama projeleri için tercih edilir, çünkü yalnızca ad alanındaki std::couttüm adları bir araya getirmekten ziyade etkilenir std(bazıları programınızda kullanılan adları etkileyebilir).


Mükemmel cevap. @ Gabriel sorusunu yanıtlarken, yıllardır sahip olduğum birkaç yan karışıklığı çözdünüz.
izomorfizme
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.