タグ

programmingとgccに関するtarchanのブックマーク (2)

  • Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ

    今年の文化祭で書いた記事です。 - C言語といえば、いやなイメージ、過去の遺産といった感じがあるかもしれません。 C言語のネガティブな側面というと、やはりポインタやメモリ管理などが難しい、ということが思いつくかもしれません。 しかし、C言語のポインタは表記に騙されやすいだけで、仕組み自体は全く難しくありません。 文法も、どこぞのPerlC++と比べたら屁でもない単純さです。 実のところ、仕様が煩雑で難しいのは、Cプリプロセッサなのであります。 普段からあまり複雑な使いかたをしないから気づかないかもしれませんが、Cプリプロセッサの置換処理は、欺瞞と裏切りに満ちた世界なのです。 これが進化するとテンプレートなどといったもっと面白いものになるのですが、今回はCプリプロセッサで計算をしちゃったりするところまで試しにやってみましょう。 (なお、GCCにより実験的に調べた記事なので、他のCコンパイラ

    Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ
  • iPhone 開発に使える C99 仕様と gcc 拡張 - 2009-04-23 - Windchase

    iPhone アプリの開発には、コンパイラとして gcc 以外を使うことは基的にありません。 したがって、gcc に実装されている C99 仕様や gcc 拡張仕様を気がねすることなく利用することができます。 ここでは、便利な C99 仕様や gcc 拡張を紹介します。 配列の動的確保 (C99) 配列を定義するときに、動的にサイズを指定してメモリを確保することができます。 従来は、 int n = 100; char* buf = alloca(n); のように alloca を使っていたところを、 int n = 100; char buf[n]; と、言語仕様の範囲内で、より直観的に書けるようになりました。 case の範囲指定 (gcc 拡張) 従来、switch 〜 case で switch (n) { case 0: case 1: case 2: case 3: proc

    iPhone 開発に使える C99 仕様と gcc 拡張 - 2009-04-23 - Windchase
  • 1