GCC yang kita pasang pada Chapter sebelumnya sudah lebih dari cukup untuk mengikuti seluruh course ini, tetapi pengembang C++ profesional hampir selalu memiliki compiler kedua, dan Clang adalah kandidat yang paling populer. Clang mengompilasi kode C++ yang sama dengan GCC, tetapi datang dari keluarga proyek yang berbeda — LLVM — dan membawa karakter sendiri: pesan error yang terbaca, kecepatan kompilasi, dan perangkat tooling yang menghasilkan banyak alat favorit IDE. Pada Chapter ini kita mempelajari posisi Clang di ekosistem, memeriksa apakah sistem kita sudah menyediakannya, memasangnya bila perlu, dan menentukan kapan Clang layak menjadi compiler utama Anda.

Apa itu Clang dan LLVM #

Clang adalah compiler C++ yang dibangun di atas LLVM (Low Level Virtual Machine), sebuah infrastruktur compiler modular. Cara kerjanya terbagi dua: Clang menjadi front end yang membaca kode C++, memeriksa sintaks dan tipe, lalu LLVM menjadi back end yang mengoptimasi dan menghasilkan machine code untuk tiap arsitektur CPU. Pemisahan ini yang membuat LLVM dipakai di mana-mana — Rust, Swift, dan Julia juga menyusun machine code-nya lewat LLVM — sementara Clang sendiri menjadi compiler bawaan macOS melalui Xcode.

Satu perbedaan praktis yang perlu kita catat sejak awal: pustaka standarnya. Di Linux, Clang secara bawaan berpasangan dengan libstdc++ milik GCC sehingga perilaku program identik dengan hasil g++; opsi -stdlib=libc++ menggantinya ke pustaka libc++ milik LLVM yang biasanya justru bawaan di macOS. Untuk kode standar seperti seluruh contoh course ini, pilihan pustaka tidak mengubah hasil — program yang sama, output yang sama.

Memeriksa Ketersediaan Clang #

Sebelum memasang apa pun, kita cek dulu apakah Clang sudah ada. Di lingkungan praktikum tempat course ini disusun, clang++ memang belum terpasang, dan perintah berikut membuktikannya dengan rapi:

bash
command -v clang++ || echo "clang++ belum terpasang di sistem ini"
text
clang++ belum terpasang di sistem ini

Perintah command -v mencari program di PATH; karena pencariannya gagal, bagian setelah || yang dieksekusi. Pada Debian, paket Clang tersedia di repositori resmi, dan kita bisa melihat versi kandidatnya tanpa memasang apa pun:

bash
apt-cache policy clang
text
clang:
  Installed: (none)
  Candidate: 1:19.0-63
  Version table:
     1:19.0-63 500
        500 http://deb.debian.org/debian trixie/main amd64 Packages

Baris Installed: (none) mengonfirmasi Clang belum ada, sedangkan Candidate: 1:19.0-63 menunjukkan repositori Debian menyediakan Clang 19 — cukup baru untuk seluruh fitur C++23 yang kita bahas di course ini.

Instalasi per Platform #

Pola instalasinya sama persis dengan GCC: satu perintah package manager per platform. Perintah-perintah berikut adalah panduan; kami tampilkan tanpa output karena versi yang terpasang bergantung pada repositori terkini di masing-masing platform:

bash
sudo apt install clang          # Debian / Ubuntu
sudo dnf install clang          # Fedora / RHEL
brew install llvm               # macOS (LLVM resmi; Xcode punya Clang sendiri)
pacman -S mingw-w64-ucrt-x86_64-clang   # Windows (MSYS2, shell UCRT64)

Beberapa catatan per platform agar Anda tidak bingung hasilnya. Di macOS, Clang sebenarnya sudah hadir bersama Xcode Command Line Tools — bila clang++ --version di sana sudah berjalan, Anda tidak perlu brew install llvm. Di Windows, paket MSYS2 di atas menyediakan clang++ di folder ...\ucrt64\bin, sama seperti g++ pada Chapter sebelumnya. Setelah instalasi, langkah verifikasinya selalu sama dan berjalan seperti g++ --version:

bash
clang++ --version

Perintah di atas akan mencetak versi Clang beserta versi LLVM-nya, misalnya Debian clang version 19.x.x di Debian 13 — jalankan sendiri di sistem Anda setelah pemasangan, karena outputnya bergantung versi yang terpasang.

Program Uji yang Sama untuk Dua Compiler #

Bukti paling meyakinkan tentang Clang bukan versinya, melainkan program yang sama dijalankan di atasnya. File berikut sudah kami kompilasi dan jalankan dengan g++ di lingkungan praktikum; setelah Clang terpasang di mesin Anda, file yang sama dikompilasi ulang tanpa satu karakter pun diubah:

cpp
#include <iostream>

int main() {
    int jumlah = 0;
    for (int i = 1; i <= 10; ++i) {
        jumlah += i;
    }
    std::cout << "Halo dari compiler yang mengompilasi saya!\n";
    std::cout << "Jumlah 1..10 = " << jumlah << "\n";
    return 0;
}

Output yang Dihasilkan:

text
Halo dari compiler yang mengompilasi saya!
Jumlah 1..10 = 55

Perintah kompilasinya pun identik — cukup ganti g++ dengan clang++:

bash
g++ -std=c++23 -Wall -Wextra sapa-clang.cpp -o sapa-clang
clang++ -std=c++23 -Wall -Wextra sapa-clang.cpp -o sapa-clang

Program C++ standar tidak peduli siapa yang mengompilasinya: flag -std=c++23 dimaknai sama, warning -Wall -Wextra sama derajatnya, dan output program hasilnya identik. Kesetaraan inilah yang membuat “compiler kedua” menjadi alat uji yang murah — bila kode Anda lolos dua compiler dengan flag ketat, kemungkinan besar kodenya portabel.

Kapan Clang Menjadi Pilihan #

Dua alasan yang paling sering membuat orang memilih Clang adalah diagnostik dan tooling. Untuk diagnostik, mari lihat dulu apa yang ditampilkan GCC saat kita salah ketik — lupa titik koma pada baris kedua program sekecil ini:

cpp
int main() {
    int x = 5
    return x;
}

Kompilasi file tersebut dengan g++ -std=c++23 -c menghasilkan pesan berikut (output nyata dari lingkungan praktikum):

text
kesalahan.cpp: In function ‘int main()’:
kesalahan.cpp:3:5: error: expected ‘,’ or ‘;’ before ‘return’
    3 |     return x;
      |     ^~~~~~

Pesan GCC itu sudah informatif: compiler menunjuk baris 3 dan menyarankan tanda yang hilang. Clang memproses kesalahan yang sama dengan gaya yang lebih ramah dibaca — biasanya menunjuk langsung ke akar masalahnya (baris int x = 5 yang kehilangan titik koma), menyisipkan catatan tambahan (note), dan kerap menawarkan perbaikan siap-terapkan (fix-it hint). Katalog gaya pesannya bisa Anda jelajahi di DiagnosticsReference Clang . Untuk pemula yang sering bertanya-tanya “salahnya di mana sebenarnya?”, kualitas pesan ini terasa sangat menolong.

Alasan kedua adalah tooling dan ekosistem: mesin penyelesaian kode di banyak editor (clangd) berasal dari Clang, dan bila pekerjaan Anda berada di dunia macOS/Xcode, Clang adalah compiler yang sama persis dipakai di sana. Panduan resmi membangun dan memasang LLVM/Clang tersedia di halaman get started Clang .

Dengan GCC dan Clang di tangan, kita sudah menguasai dunia Unix. Chapter berikutnya melintasi batas platform dan membahas pasangan resmi Windows: Visual Studio dan compiler MSVC.