タグ

container_ofに関するyukimori_726のブックマーク (2)

  • [小ネタ]CでListとかデータ構造をどうにかして簡単に使いたい - Qiita

    Cの小ネタです。 事の経緯 ピュアなCはC++みたいにSTLやらBOOSTとか便利なものはないですし、気の利いたデータ構造(俗に言うコレクション)を書こうにもわざわざ自分で書く必要があったり、やれswiftだーgoだーphpだーとか言ってるこのご時世に、データ構造を書く上での煩雑さというのが、時代というか古さを感じます。 諸事情によって、C++が使えないとかそういう人は自家製のライブラリとか使ってるのかなぁとか毎回思っております。 で、そういえばLinux Kernelは大体ピュアCで書かれておりまして(gcc拡張使いまくりだから邪道というのは置いておいて、、)、list.hとか汎用的にデータ構造を扱える仕組みがあったよなぁと思い出して、これが普通のユーザ空間で使えたら楽だし、誰か同じ事考えてないかなーと思って広いいんたーねっとを探索してみたら、やっぱり同じ事考えてる人居たという話でした。

    [小ネタ]CでListとかデータ構造をどうにかして簡単に使いたい - Qiita
  • container_of という大変便利なマクロ関数の存在を知った - big-eyed-hamster’s diary

    今更ながら、include/linux/kernel.h container_of が相当使えるマクロ関数だと気づきました. 一見わかりにくいのですが、なんと「変数が入っている構造体へのポインタ」をコンパイル時に計算してくれるのです. container_of を用いることで、API に縛られず、データのひも付けを行うことができます. 以下のような感じです*1: struct callback_timer{ struct hrtimer timer; void (*callback)(unsigned long data); unsigned long data; int index; } struct callback_timer cb_timer[128]; // タイマが点火したときに呼ばれる関数. enum hrtimer_restart handle_hrtimer (struc

    container_of という大変便利なマクロ関数の存在を知った - big-eyed-hamster’s diary
  • 1