読者です 読者をやめる 読者になる 読者になる

ゆとりーなの日記

日記的な事を書いて行くと思はれる

macのclangはなんか知らんがブロック構文が使える

 Macのclangはどうもデフォルトでブロック構文が使えるという機能があるようです。

#include <stdio.h>

int main(void) {
  void (^a)() = ^(){puts("blocks");};
  a();
  return 0;
}

 これが特になにもオプション付けなくても通ります。最初拡張子が.mや.mmじゃないと駄目なんじゃないかとか思ってたんですがそんなことありませんでした。.cで通ります。しかも、-Wallや-Wextra、はたまた-ansiや-std=c89、-pedantic等を付けても何も言われません。他の環境のclangではどんな感じなんですかね。
 ってことでubuntuさんにclangいたことを思い出したので試したところ普通に通りませんでした。エラーメッセージを見てたらどうも-fblocksってオプションがあるらしいです。恐らくMac環境のclangにはデフォルトでこれが附いてるんでしょう。
 というか速くラムダさん下さい!