elfen00’s blog

プログラミング(Python3,C++,Typescript,javascript)関連等とガジェット(Android)関連

【Windows10】Bash on Windowsで始めるC++11 interpreter Cling

Windows10RS1以降ではWindows Subsystem for Linux(WSL)が使え、かなりネイティブに近いUbuntuが使えます。GUI周りや一部のネットワーク関連は弱いですが
今回はこのBash on Windowsを使ってClingを使います。

Cling | ROOT a Data analysis Framework

Interpreterはいちいちコンパイルしなくていいので気軽に計算できて面白いかと思います。

導入方法

Bash on WindowsはUbuntu14.04LTS扱いなので以下のリンクからビルド済みのをダウンロードして

https://root.cern.ch/download/cling//

tar xf cling_2016-10-28_ubuntu14.tar.bz2

みたいな感じで展開してあとは

cd bin
./cling

で起動するだけ。必要に応じて/usr/binに動かしてもいいかも

****************** CLING ******************
* Type C++ code and press enter to run it *
*             Type .q to exit             *
*******************************************
[cling]$

例  clangベースなので全ての標準ライブラリをincludeするbits/stdc++.hが使えます。ちょっと便利

[cling]$ #include<bits/stdc++.h> 
[cling]$ using namespace std;
[cling]$ map<int,int> m;
[cling]$ m
(std::map<int, int> &) {  }
[cling]$ m[2]=3
(std::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > >::mapped_type) 3
[cling]$ m
(std::map<int, int> &) { 2 => 3 }

エラーも親切

[cling]$ i
input_line_14:2:2: error: use of undeclared identifier 'i'
 i
 ^
[cling]$ m.push(1)
input_line_15:2:4: error: no member named 'push' in 'std::map<int, int, std::less<int>, std::allocator<std::pair<const
      int, int> > >'
 m.push(1)
[cling]$ "1"+3
input_line_16:2:5: warning: adding 'int' to a string does not append to the string [-Wstring-plus-int]
 "1"+3
 ~~~^~
input_line_16:2:5: note: use array indexing to silence this warning
 "1"+3
    ^
 &  [ ]
(const char *) ""

C++11なのでautoによる型宣言もlambda式も使える!!

[cling]$ auto func = [](int n){ cout << n << endl; };
[cling]$ func(1)
1
[cling]$ func(100)
100

特殊なOption等

.q

Clingを終了

.help

helpを表示します

.L

ライブラリを読み込みます

.storeState

状態をに保存します

その他

詳しくは以下で qiita.com