のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

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]

まぁ…必要ない時はいいのですが。。。。

感想

これぐらい知っていれば大丈夫だと思います!
まぁ新しくよく出るバグを見つけたら掲載します。