SLP KBIT Advent Calendar 2014 -7日目-
はじめに
この記事は SLP KBIT Advent Calendar 2014 の7日目の記事です。
当ブログに書き忘れてた内容があったので、書くついでに記事にしました。
というわけで、「Clang」について語っていきます。
Clangとは
読み方は「クラン」。
一言で言うと、コンパイラフロントエンド。
コンパイルの下準備 … 字句解析・構文解析・意味解析を行う。
要は、ソースコードを解析して、ミスが無いかどうかチェックしてくれるもの。
Clang だけでコンパイルを行う訳ではなく、LLVM というものとセットで使う。
LLVM については、主旨から逸れるので省略。
導入方法も、環境によって違うので省略。
ちなみに自分は Cygwin に導入する際、apt-cyg で Clang を、wget で LLVM を
入れました。
GCCとの違い
↑の文を見て、「別に GCC でいいじゃん」と思う人もいるだろう。
しかし、GCC と Clang の間には、明確な差がある。
これは見た方が早いので、ちょっとした実験を行って、結果を見ていただこう。
実験
下記のコードを GCC と Clang に扱わせる。
色々とおかしいところがあるので、それを検出させる。
まずは GCC。
配列のサイズ不足についてはOK。
ただ、printfの型の違いについてはスルー。
そして、11行目を指して「セミコロンが無いよ」と言っているが、
実際にセミコロンを付けるべき場所は 10行目であり、分かりづらい。
次に、Clang。
おかしいところは全て検出されている。
さらに、波線で場所を分かりやすく示すだけでなく、どのように修正
すべきかまで示している。
セミコロンの付け忘れに関しても、キチンと10行目を指した上で、
エラーを吐いている。
両者を見比べてみると、Clangの方が分かりやすい。
結論
Clang、マジ便利。