タグ

code-readingとcに関するsomathorのブックマーク (2)

  • printf()のソースコードで、ソースコードリーディングのコツを身に付ける

    書籍の中から有用な技術情報をピックアップして紹介するシリーズ。今回は、秀和システム発行の書籍『ハロー“Hello, World” OSと標準ライブラリのシゴトとしくみ(2015年9月11日発行)』からの抜粋です。 ご注意:稿は、著者及び出版社の許可を得て、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。 ※編集部注:前回記事「OSのシステムコールの呼び出しとは&バイナリエディタの使い方」はこちら 標準入出力関数の実装を見る printf()は指定したフォーマットに従って文字列出力を行うための標準ライブラリ関数だ。入門書では定番の関数であるため、利用したことがないという人は少ないことだろう。 しかしそのprintf()の中の処理を読んだことがあるか、となると話は変わってくるのではないだろうか。これほど多く利用されているp

    printf()のソースコードで、ソースコードリーディングのコツを身に付ける
  • Linuxカーネルのコードを読んで勉強になったこと - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    Linuxカーネルのコードを読んでて、なるほど〜と思うことはよくあるけど、その中でも特に今までの考え方をぶち壊してくれたのはなんだっけと思ったところ、やっぱりリスト構造かなと言うところ。 c言語でリスト構造を作る場合、一般的な教科書方式だと↓のようにデータとnextポインタは密結合になってると思います。これの場合、struct foobarのポインタをnext要素に使っているので、他の構造体(例えば、struct hogehoge)で同じことをしようとすると、その構造体ではstruct hogehoge *nextというメンバ変数を持つ必要があります。 ヘッド要素はstruct foobarです。 struct foobar { int n; char s[64]; struct foobar *next; }; struct foobar head; Linuxカーネルの場合、データとリ

    Linuxカーネルのコードを読んで勉強になったこと - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
  • 1