Home > c++, C++11, Clang, Compiler > Clang – C++ Smart Compiler

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..

Categories: c++, C++11, Clang, Compiler
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: