C++コンパイラclangのエラーコード まとめ(Marvericksデフォルトのg++)
Sponsored Links
皆さんこんにちわ
お元気ですか?外は雪がつもってえらいこっちゃです。
さて。本日はclangのコンパイルについて
Mavericksには最初からclangが入っています。
g++ clang: error: no input files
g++で打ったのにclangのエラーが出てます。ええ、g++の皮をかぶったclangなのです。
中はLLVMと呼ばれるプログラムを最適化するプログラムが入っているようです。
さて、C++結構きっちりしているので、コンパイルするとき結構エラーに悩まされますよね?僕だけ?
そんな人が少しでも減ればいいななんて思いながらよく出そうなErrorをまとめました。
Error
定義されていませんよ
use of undeclared identifier 'a'
多分初期化を忘れています。
一度定義されています。
redefinition of 'add'
コードを見直して!2回定義していませんか?
終了記号がついてませんよ。
expected ';' at end of declaration
これはよく見ますね。該当箇所を修正すればおっけー
ライブラリが足りてないよ
linker command failed with exit code 1
案外よくあるのですが…結構困る。リンクするファイルが足りてないよってことです。
よくわからん?クラスの衝突かな
reference to 'vector' is ambiguous
ublas関連のヘッダーとvectorのヘッダーを使って
#include <iostream> #include <vector> #include <boost/numeric/ublas/vector.hpp> #include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/io.hpp> using namespace std; using namespace boost::numeric::ublas; int main(void){ vector<double> e; }
この型では初期化できません。
cannot initialize a variable of type 'int' with an lvalue of type 'const char [5]'
と使用するとクラスが衝突して発生するバグ。なんか大量のバグが後で列挙されますが、原因は一つだったりする。
そんな型ないわ!
unknown type name 'Temp'
ええ、そんな型ありません。
ええ、そんなメンバー持っていません。
no member named 'Zoo' in 'Temp'
class Temp{ int a = 100; }; void Boo(){ int a =100; } int main(void){ Temp x; x.Zoo(); }
あーそんなメンバ関数持ってないよね…。まぁありがちなミス。
Warning
結果を使っていませんよ。
expression result unused [-Wunused-value]
まぁ…必要ない時はいいのですが。。。。
感想
これぐらい知っていれば大丈夫だと思います!
まぁ新しくよく出るバグを見つけたら掲載します。