Archive
Clang – C++ Smart Compiler
Presentasi dari Chandler Carruth yang bisa kita lihat di GoingNative mengenai Clang compiler sangat persuasif sekali. Chandler menjelaskan kelemahan dari compiler sebelum seperti gcc dsb. Sering kali error yang dikeluar kan oleh compiler c++ akan membuat frustasi dari programmer pemula. Diagnostic yang dikeluarkan sukar dimengerti, bahkan mungkin sama sekali tidak membantu kita dalam mengalanalisa masalah. Compiler juga sering sekali melewatkan kesalahan2 yang terjadi meskipun secara syntax benar tetapi logical nya salah atau bahkan tidak ada artinya.
Clang dalam hal ini dibuat berdasarkan masalah tersebut. Clang memberikan pesan error, warning dan diagnosa yang sangat baik untuk kesalahan, bad practice, and suggestion. This is really cool stuff. Sayangnya support untuk windows tidak begitu bagus dan buggy.
Clang juga mendukung c++11 yang sudah di approved oleh komite standard sejak akhir tahun lalu. Sehingga ini benar2 cukup menggoda sekali untuk dicoba. :). Dukungan yang diberikan Clang terhadap c++11 cukup lengkap. Anda dapat melihat perbandingannya dengan compiler2 lain di beberap situs berikut
http://stackoverflow.com/questions/7232878/c11-compiler-closest-to-the-standard-and-how-close
https://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport
http://www.aristeia.com/C++11/C++11FeatureAvailability.htm
Saya mengikuti langkah yang ada di Getting Started atau di sini untuk melakukan build compiler Clang dengan Visual Studio c++. Kita akan melakukan compilasi compiler. That’s really cool isn’t ? c++ compiles c++ compilers. Proses kompilasi akan memakan waktu yang cukup lama. That’s compiler right ? not a common software. Jadi saya harap anda bersabar pada saat kompilasi dilakukan. Saya disini hanya akan melakukan build terhadap clang project sebagai compiler.
Hasil kompilasi tersebut akan ditemukan build\bin\Debug. Anda dapat melihat bahwa kompilasi tersebut menghasilkan clang.exe. Ini merupakan compiler yang akan kita gunakan untuk source code kita.
Seperti biasa saya akan mulai membuat program hello.cpp. Anda terlebih dahulu harus menambahkan compiler tersebut pada environment variable PATH.
#include int main(int argc, char **argv) { printf("hello world\n"); }
Lakukan kompilasi dari command prompt
clang hello.c -o hello.exe
Anda dapat melihat hello.exe di generate. Jika anda mengeksekusinya maka akan segera ditampilkan Hello World ke layar. Tidak mengejutkan. 🙂
Sekarang kita akan membuktikan kecangihan dari Clang seperti yang ada di presentasi tersebut. Apakah benar Clang ini dapat menghasilkan diagnostic yang bagus ?
buat code add.cpp seperti berikut
int foo() { 4 + 4; }
Lakukan kompilasi dengan clang add.cpp -o add.exe. Maka akan ditampilkan pesan sebagai berikut
add.cpp:2:6: warning: expression result unused [-Wunused-value] 4 + 4; ~ ^ ~ add.cpp:3:1: warning: control reaches end of non-void function [-Wreturn-type] } ^
Pesan warning yang diberikan cukup jelas. Very Cool.
Contoh lain adalah mengenai mengakses index array.
int foo() { int arr[100]; return arr[100]; }
Maka kita akan mendapatkan error yang sangat deskriptif berikut ini
array.cpp:4:9: warning: array index 100 is past the end of the array (which contains 100 elements) [-Warray-bounds] return arr[100]; ^ ~~~ array.cpp:2:2: note: array 'arr' declared here int arr[100]; ^ 1 warning generated.
Anda dapat mencoba contoh2 lain yang ada di presentasi Chandler tersebut. Ini sangat membantu bagi para beginner c++ untuk belajar. Clang akan membantu mengkoreksi code anda. Sehingga anda tidak menembak kaki anda sendiri dengan segala kebebasan yang ada di c++.
Saya mencoba menjalakan range for (c++11) dengan Clang. Tetapi gagal. Memang benar support untuk windows buggy. :(. Mudah2n segera dibenahi.
Jika anda ingin menggabungkan dengan visual studio. Anda dapat melakukan instalasi pluginsnya.
https://github.com/ishani/ClangVSx
http://stackoverflow.com/questions/4687789/use-clang-with-msvc-2010
http://stackoverflow.com/questions/2487931/llvm-c-ide-for-windows
Enjoy it..