ここしばらく忙しかったが、時間が出来たので、ここはひとつ、記事を書いてみる。 以前、Twitterに投稿したネタを、解説つきで書いてみようと思う。 テーマは、『C言語のラムダ』 ラムダは最近のプログラミング言語では、ほとんど取り入れられている機能であり、ラムダ無くして快適なプログラミングは出来ないといってもいい(?) しかし、C言語にはラムダがない、ということで嘆いている人も多いことだろう。 今回は、C言語で使えないはずのラムダをプリプロセッサで実現しようという話である。 C言語は関数ポインタがあり、関数をモノとして扱うことができる。 しかしながら、gccのコンパイラの拡張機能とプリプロセッサを用いて、少し工夫すれば、C言語でラムダを実現することは可能である。 まず、以下のように定義してみよう。 #define LAMBDA(rettype, ARG_LIST, BODY) \ ({ \