Program
İşte C++'taki eksiksiz Hello World programı. Tarayıcıda derleyip çalıştırmak için Run'a bas:
Tek bir satır yazdırır:
Hello, World!
Beş satır kod var ve her biri belirli bir iş yapıyor. Aşağıdaki bölümler bunları sırayla ele alıyor, ardından aynı dosyayı kendi bilgisayarında nasıl derleyeceğini ve ilk derleyici hatalarının genellikle ne anlama geldiğini anlatıyor.
Satır Satır
#include <iostream>
# ile başlayan satırlar, asıl derleyiciden önce çalışan önişlemciye verilen talimatlardır. #include <iostream>, standart <iostream> başlığındaki (giriş/çıkış stream'leri) bildirimleri dosyaya yapıştırır. std::cout ve std::endl bu başlıkta bildirilir. C++'ta yerleşik bir yazdırma komutu yoktur; yazdırma standart kütüphanenin bir parçasıdır ve onu bu satırla kullanmaya başlarsın.
int main() {
Her C++ programı main adlı bir fonksiyondan çalışmaya başlar. Tam olarak bir tane olmalı ve küçük harfle yazılmalıdır. Önündeki int, main'in bittiğinde işletim sistemine bir tam sayı döndürdüğünü söyler. Boş parantezler burada argüman almadığını belirtir, açılış süslü parantezi { de fonksiyon gövdesini başlatır.
std::cout << "Hello, World!" << std::endl;
Asıl yazdırma işini bu satır yapar.
std::coutstandart çıktı stream'idir; genellikle terminaldir.std::öneki,cout'un tüm standart kütüphanenin tutulduğustdisim alanında (namespace) bulunduğunu söyler.<<ekleme operatörüdür. Sağındaki değeri solundaki stream'e gönderir. Zincirleyebilirsin; her<<bir sonraki parçayı aynı çıktıya ekler."Hello, World!"bir string literal'dir: çift tırnak içindeki metin.std::endlsatırı bitirir.- Noktalı virgül ifadeyi bitirir. C++'taki her ifadenin bir noktalı virgüle ihtiyacı vardır.
return 0;
return, main'i bitirir ve işletim sistemine bir değer döndürür. Geleneksel olarak 0 programın başarılı olduğu, diğer her sayı ise bir hata anlamına gelir. Betikler ve derleme araçları bu çıkış kodunu okur. main içinde bu satır isteğe bağlıdır: yürütme kapanış süslü parantezine ulaşırsa C++ sanki return 0; yazmışsın gibi davranır.
Kapanış Süslü Parantezi
Kapanış süslü parantezi main'in gövdesini ve onunla birlikte programı bitirir.
std::endl ve '\n'
Bir satırı bitirmenin iki yaygın yolu var ve ikisi de gerçek kodda karşına çıkar:
Çıktı:
Hello, World!
Hello again!
Line one
Line two
Görünen sonuç aynı. Fark şu: std::endl bir satır sonu yazar ve ardından stream'i boşaltır, yani tamponda bekleyen metni hemen terminale gönderir. '\n' yalnızca satır sonunu yazar; stream kendi zamanlamasıyla boşalır (en geç program bittiğinde). Binlerce satır yazdıran bir döngüde std::endl'nin fazladan boşaltmaları ölçülebilir bir fark yaratır. Bu yüzden birçok C++ programcısı varsayılan olarak '\n' kullanır ve std::endl'yi yalnızca metnin hemen görünmesi gerektiğinde kullanır. Üçüncü satırda görüldüğü gibi \n kaçış dizisi bir string'in içinde de çalışır. cout ve cin'i daha ayrıntılı olarak girdi ve çıktı sayfası anlatıyor.
using namespace std; Sürümü
Birçok eğitim Hello World'ü şöyle yazar:
using namespace std;, derleyiciye başka türlü bulamadığı adlar için std isim alanına bakmasını söyler; böylece cout ve endl önek olmadan çalışır. Küçük programlar ve alıştırmalar için sorun yoktur. Daha büyük kodlarda ve başlık dosyalarında genellikle kaçınılır, çünkü yüzlerce standart adı kapsama çeker ve bunlar kendi adlarınla çakışabilir (örneğin count ya da distance adlı kendi fonksiyonun). std::cout yazmak beş karaktere mal olur ve bu riski ortadan kaldırır.
Hello World'ü Kendi Bilgisayarında Derlemek ve Çalıştırmak
Tarayıcıdaki editör derlemeyi senin yerine yapar. Kendi makinende aynı iki adımı kendin yaparsın: kaynak dosyayı çalıştırılabilir bir dosyaya derler, sonra bu dosyayı çalıştırırsın. Önce bir C++ derleyicisinin kurulu olması gerekir; Windows, macOS ve Linux'ta kurulumu kurulum rehberi anlatıyor.
Programı hello.cpp olarak kaydet, aynı klasörde bir terminal aç ve derle:
g++ hello.cpp -o hello
Hiçbir şey yazdırılmadıysa işlem başarılı olmuştur ve kaynak dosyanın yanında artık hello adlı (Windows'ta hello.exe) çalıştırılabilir bir dosya vardır. Onu çalıştır:
./hello
Windows'ta bunun yerine hello.exe ya da yalnızca hello çalıştır. macOS'ta clang++ hello.cpp -o hello aynı şekilde çalışır; oradaki g++ da genellikle başka bir adla Clang'dir.
En baştan eklemeye değer iki bayrak var: -std=c++17 (ya da -std=c++20) dil standardını seçer, -Wall -Wextra de gerçek hataları yakalayan uyarıları açar:
g++ -std=c++17 -Wall -Wextra hello.cpp -o hello
Bu bayrakların ne yaptığını, -o'nun ne anlama geldiğini ve onsuz neden a.out adlı bir dosya elde ettiğini C++ derleme sayfası açıklıyor.
Sık Karşılaşılan İlk Hatalar
Aşağıdaki hata metinleri GCC'ye (g++) aittir. Clang mesajlarını farklı ifade eder ama aynı satırı gösterir.
Eksik noktalı virgül.
hello.cpp:5:5: error: expected ';' before 'return'
Derleyici eksik ;'yi ancak bir sonraki token'a ulaştığında fark eder, bu yüzden satır numarası genellikle hatanın bir satır sonrasını gösterir. Önceki satırın sonuna bak.
Eksik #include <iostream>.
error: 'cout' is not a member of 'std'
std::cout, <iostream> içinde bildirilir. Include satırını dosyanın en üstüne ekle.
Eksik std::.
error: 'cout' was not declared in this scope; did you mean 'std::cout'?
Ya std::cout ve std::endl yaz ya da include satırından sonra using namespace std; ekle.
main yerine Main. C++ büyük/küçük harfe duyarlıdır. int Main() içeren bir program derlenir, ama bağlama (link) adımında undefined reference to 'main' ile başarısız olur, çünkü bağlayıcı programın başlaması gereken fonksiyonu bulamaz.
g++ yerine gcc ile derlemek. gcc hello.cpp C++ kodunu derler ama C++ standart kütüphanesini bağlamaz, bu yüzden uzun bir undefined reference to std::... hataları listesi alırsın. C++ dosyaları için g++ (ya da clang++) kullan.
Kıvrık tırnaklar. Bir kelime işlemciden ya da web sayfasından kopyalanan kod, düz tırnaklar ("Hello") yerine tipografik tırnaklar (“Hello”) içerebilir. GCC stray '\342' in program hatası verir. Tırnakları editöründe yeniden yaz.
Eski başlıklar ve void main. Çok eski bazı eğitimler #include <iostream.h> ya da void main() kullanır. İkisi de standart C++ değildir: başlık .h olmadan <iostream>'dur ve main int döndürmelidir. Modern derleyiciler ikisini de reddeder.
C++23'te std::println ile Yazdırmak
C++23, bir satır yazdırmanın daha kısa bir yolunu ekledi: <print> başlığındaki std::println:
#include <print>
int main() {
std::println("Hello, World!");
}
Satır sonunu senin yerine ekler ve değerler için {} yer tutucularını destekler. Desteği GCC 14, libc++ ile Clang 18 ve Visual Studio'nun güncel sürümleriyle geldi ve -std=c++23 gerektirir. Mevcut kodların ve eğitimlerin çoğu hâlâ std::cout kullanıyor, bu yüzden ikisini de rahatça kullanabilmek iyi olur.
Sıkça Sorulan Sorular
C++'ta Hello World nasıl yazılır?
#include <iostream> ile başla, sonra int main() tanımla ve içine std::cout << "Hello, World!" << std::endl; yaz, ardından return 0; ekle. Dosyayı hello.cpp olarak kaydet, g++ hello.cpp -o hello ile derle ve ./hello ile çalıştır.
C++ Hello World neden #include <iostream> gerektirir?
std::cout ve std::endl dilin içinde yerleşik değildir, <iostream> başlığında bildirilir. Include olmadan derleyici bu adları tanımaz ve 'cout' is not a member of 'std' gibi bir hatayla durur.
std::endl ile '\n' arasındaki fark nedir?
İkisi de satırı bitirir. std::endl ayrıca çıktı tamponunu boşaltır ve metni hemen dışarı gönderir. '\n' yalnızca satır sonunu yazar ve boşaltmayı stream'in kendisine bırakır; çok sayıda satır yazdırırken bu daha hızlıdır. Tek bir Hello World satırında görünür bir fark yoktur.
C++'ta main'in sonunda return 0 gerekli mi?
Hayır. main, C++'ın return'ü atlamana izin verdiği tek fonksiyondur; kapanış süslü parantezine ulaşmak return 0; gibi sayılır ve işletim sistemine programın başarılı olduğunu bildirir. Birçok kişi çıkış durumunu açık yazmak için yine de ekler.