タグ

C99に関するanatofuzのブックマーク (2)

  • テクノとしてのC言語、あるいはC99的書き方のすすめ - Qiita

    以下、読書感想文としてのポエムである。 21st Century C1(以下 21CC と略)という、いささか変わったがある。C言語のプログラマの多くが1980年代の知識に固まってしまっているのを打破しようと書かれたなのだろうと、ざっと自分が1st editionを読んだ感じ2では思っている。C89 aka ANSI Cがいまだに標準だと思っている人3には、おすすめかもしれない。 「Cはパンクロックだ」 21CCでは C is Punk Rock 4 という表現が書籍の最初と最後に出てくる。このパンクロックが何であるかについての議論はしない5。ただ、パンクロックの例えが「シンプルかつ荒削りだけど力強い」言語に対するものであるというのは、個人的なパンクロックへの印象、そしてC言語の特徴をふまえれば良くわかる。 私も気がつけば30年ぐらいC言語で仕事をしていたりする。そして現在の2015年

    テクノとしてのC言語、あるいはC99的書き方のすすめ - Qiita
  • C言語のインライン関数について - OSのようなもの

    GCCや多くのコンパイラーは,C言語の標準(C99)にインライン関数が取り込まれるずっと前からインライン関数をサポートしていた。そのためかインライン関数の定義は様々で,同じ書式でも各コンパイラで挙動が異なる場合がある。 今回は,インライン関数の定義をまとめ。それぞれ出力されるアセンブラコードを比べてみる。 概要 先頭に inline という言葉を付けて関数を宣言すると,コンパイラーはそれをヒントにコードをインライン化――関数のコードを呼出し元に展開する。これにより,関数呼び出しのオーバーヘッドが取り除かれ実行が早くなる。 inline はコンパイラに対するヒントであって指示ではないから,様々な理由からヒントが無視され,インライン化されず実際の関数として出力される場合がある。例えば,その関数のアドレスが参照される場合や,関数定義内の再帰呼出しなどはインライ化できないし,コンパイラーの最適化を

    C言語のインライン関数について - OSのようなもの
  • 1