まりま

個人的備忘録 MyReferenceManual

mbedが公式にC++11に対応したら

f:id:ewvss:20160420233818p:plain

 これは普通のタイマー割り込みLチカコード。たかだかLEDを点滅させるという一行だけの処理にわざわざ関数flip()を定義していてとても無駄に見えます。

f:id:ewvss:20160420233819p:plain

 これはラムダ式を利用したタイマー割り込みLチカコード。さきほどのプログラムと完全に同じ動作をしますが、ラムダ式を利用することによりコードがよりすっきりしています。見た目がよくなっただけではなく、関数の名前を考える必要が無いという命名の苦手なプログラマには嬉しい効果もあります。苦手でなくとも、割り込みで動作させる関数が複数あり、それらの関数の動作が非常に似ている場合などは関数名を考えるのは少し大変ですし、量が増えてくると関数定義が多すぎて読みにくい&命名の手間が関数の数だけかかる、というつらいプログラムが出来上がってしまいます。早くmbedも公式でC++11以降に対応して欲しい…と願う僕でした。

 

ちなみに、現状ではオフラインIDEを使う、Cloud9や自前のLinuxにmbedコンパイラを導入し、Makefileを書き換える、と言った方法でC++11やC++14の機能を使うことが出来ます。最先端を行きたい(今時の本当の最先端はC++17なんでしょうが...)という方は挑戦してみてはどうでしょうか。