コンピュータや音楽の事書いてます

Eclipse + CDT + MinGWでc++0x

c++0xをやりたいのでMinGW上にgcc4.4をインストール。それに伴いインクルードパスを変更。色々適当に試してうまくいったのがこれ。なぜかMinGW\lib\gcc\mingw32\4.4.0\includeとかが出来上がる。lib配下になぜヘッダ・ソースが???。まぁ意味的にはライブラリか。確かに。

g++のオプションに "-std=gnu++0x" を追加。"-std=c++0x"だとなぜかコンパイル出来なかった。

eclipse側はauto型の宣言に対応出来ず、Syntax error がでるが、コンパイルは出来る。

#include <iostream>
#include <string>

using namespace std;

int main(){
	string s("abcdefgh");

	auto s_sub = s.substr(4,2);
	auto s_length = s.length();

	cout<<s_sub<<endl;
	cout<<s_length<<endl;
	return 0;
}

ctrl+B, F11でgdbが起動。auto変数2つがちゃんとstringとunsigned intになっているのが確認出来た。感動。

includeパスの件

後々調べたらLinux上のGCCでも /usr/lib/gcc/i386-redhat-linux/4.1.2/include とかが存在する。ただ自分が無知なだけだった。ちなみに玄箱proのFedoraだと /usr/lib/gcc/armv5tel-redhat-linux-gnueabi/4.1.2/include になってた。なるほど。
しかし何でLinux上だと複雑なinclude設定をしなくても済むのか。謎は残る。
2009/10/27 gcc -print-search-dirs で確認出来る事が分かった