Online C++ derleyici nasıl kullanılır?
- C++ kodunuzu düzenleyiciye yazın veya yapıştırın. Kodda bir
int main()bulunmalıdır. Örneği sıfırla başlangıç programını geri getirir. - Programınız
std::cinveyastd::getlineile girdi okuyorsa girdiyi önce Girdi (stdin) kutusuna yazın. - Çalıştır düğmesine ya da Ctrl + Enter (Mac'te ⌘ + Enter) tuşlarına basın. Sayfa
main.cppdosyasını derler, varsa tanılama mesajlarını gösterir ve ardından programı çalıştırır. - 5, 15 veya 60 saniyelik bir süre sınırı seçin. Çalışma bu süreyi aşarsa program durdurulur. Durdur programı hemen sonlandırır.
İlk çalıştırmada sayfa, yaklaşık 30 MB boyutundaki Clang araç zincirini indirir ve tarayıcınız bunu önbelleğe alır. Bundan sonra tipik bir programı derlemek bir saniyeden çok daha kısa sürer. Kopyala ve main.cpp kodunuzu saklamanızı sağlar, A−/A+ metin boyutunu değiştirir, düzen düğmesi yan yana ve alt alta paneller arasında geçiş yapar, Tam ekran (Ctrl/⌘ + Shift + F, çıkmak için Esc) ise düzenleyiciye tüm pencereyi verir.
Hiçbir şey yüklenmez. Derleyici de programınız da tarayıcınızda çalışır ve en son kodunuz yalnızca tarayıcınızın yerel depolama alanına kaydedilir.
Neler destekleniyor?
Sayfa, YoWASP projesi tarafından WebAssembly için derlenmiş gerçek bir Clang/LLVM 21 derleyicisi kullanır. Kaynak kodunuzu tarayıcının çalıştırdığı bir WebAssembly (WASI) programına derler. Çalıştırdığı komut şuna eşdeğerdir:
clang++ main.cpp -std=c++20 -O2 -Wall -fno-exceptions -o main.wasm
- C++20:
auto, lambda'lar, aralık tabanlıfor, yapısal bağlamalar (structured bindings),constexpr, concept'ler ve belirlenmiş başlatıcılar (designated initializers). - libc++'tan standart kütüphane:
vector,string,map,unordered_map,set,algorithm,numeric,iostream,sstream,iomanip,optionalile diğer kapsayıcılar ve algoritmalar. - Clang'in kendi tanılama mesajları; şablon hataları ve
-Walluyarıları dahil, derleyicinin bildirdiği şekliylemain.cpp:satır:sütunbiçiminde aynen yazdırılır. mainişlevinin sıfırdan farklı bir değer döndürmesi İşlem N koduyla sonlandı olarak bildirilir.
İstisnalar neden kapalı?
C++ istisnaları WebAssembly'de, tarayıcıda çalışan bu araç zincirinin sağlamadığı ek çalışma zamanı desteği gerektirir; bu yüzden kod -fno-exceptions ile derlenir. Sonuç olarak try, throw ve catch desteklenmez ve bunları kullanan kod derlenemez. Hatalı girdide std::stoi veya aralık dışı bir indeksle .at() gibi normalde istisna fırlatacak kütüphane işlevleri de burada yakalanamaz. Dönüştürmeden önce girdiyi kontrol edin, indeksleri size() ile karşılaştırın ya da hatayı belirtmek için bir std::optional döndürün:
#include <optional>
#include <string>
std::optional<int> parse(const std::string& s) {
if (s.empty()) return std::nullopt;
int v = 0;
for (char c : s) {
if (c < '0' || c > '9') return std::nullopt;
v = v * 10 + (c - '0');
}
return v;
}
Diğer sınırlamalar
- İş parçacığı yok:
std::thread,std::asyncve pthreads kullanılamaz. - Ağ yok,
fork/execyok ve gerçek bir dosya sistemi yok; bu yüzdenstd::ifstreambilgisayarınızdaki dosyaları okuyamaz. Bunun yerine stdin kullanın. - Qt, SFML veya OpenGL gibi grafik veya GUI kütüphaneleri yok. Çıktı yalnızca metindir.
- Boost gibi üçüncü taraf kütüphaneler kurulu değildir. Her şey tek bir
main.cppdosyasında olmalıdır.
Birkaç satırda modern C++
Başlangıç programı, modern C++'ı eski ders kitabı kodlarından daha kısa hâle getiren kalıpları gösterir:
std::map<std::string, int> ages{ {"Ada", 36}, {"Linus", 54} };
for (const auto& [name, age] : ages) // structured bindings
std::cout << name << " is " << age << '\n';
std::vector<int> v{5, 3, 9, 1};
std::sort(v.begin(), v.end(), std::greater<>());
auto evens = std::count_if(v.begin(), v.end(), [](int x) { return x % 2 == 0; });
- Döngülerde
std::endlyerine'\n'tercih edin.endlakışı ayrıca boşaltır (flush) ve bu daha yavaştır. std::cin >> nilestd::getlinebirlikte kullanılıyorsa öncestd::cin.ignore()çağırın; aksi hâldegetlineönceki satırın geri kalanını boş bir dize olarak okur.- Bir
std::mapüzerindeoperator[], anahtar yoksa varsayılan bir değer ekler. Map'i değiştirmeden bir anahtarı aramak içinfindveyacontains(C++20) kullanın.
Sıkça sorulan sorular
Hangi C++ standardı kullanılıyor?
C++20; kod, Clang 21 tarafından -O2 -Wall seçenekleriyle derlenir. C++11, C++14 veya C++17 için yazılmış kodlar da derlenir.
try/catch içeren kodum neden derlenmiyor?
İstisnalar -fno-exceptions ile devre dışı bırakılmıştır. Bunların yerine dönüş değerleri, std::optional veya riskli işlemden önce açık kontroller kullanın.
bits/stdc++.h kullanabilir miyim?
Hayır. Bu başlık dosyası GCC'ye özgüdür ve libc++'ta bulunmaz. <iostream>, <vector> ve <algorithm> gibi ihtiyacınız olan standart başlıkları ekleyin.
Sade C için bir sürüm var mı?
Evet, online C derleyici aynı Clang'i C17 modunda kullanır. Sitedeki tüm online derleyicilere de göz atabilirsiniz.
Güncellendi