C言語

register指定子

引用from: http://www.geocities.jp/ky_webid/c/051.html registerを付けた変数には、高速にアクセスできるようにコンパイラに要求を出します。要求を出すだけであって、コンパイラがそれに従うかどうかは分かりませんし、どのような方法で高速アクセスを実…

memsetとbzero

Manpage of MEMSET http://www.linux.or.jp/JM/html/LDP_man-pages/man3/memset.3.htmlManpage of BZERO http://www.linux.or.jp/JM/html/LDP_man-pages/man3/bzero.3.html以下の2つは処理内容に違いはあるのでしょうか? memset(hoge, '\0', fuga); bzero(h…

関数ポインタによる多態性

ポリモルフィズムというとオブジェクト指向言語の専売特許のようなイメージがありますが、C言語でも関数ポインタを使えば同じようなことが実現できるわけです。MySQLのソースを眺めていたらそれらしき部分を見つけたのでメモage。 int mi_repair_by_sort(MI_…

到達不可能なコードがあっても良い

Javaだと以下のコードはコンパイルできません。 public class Foo { public int bar() { return 0; return 1; } }なぜなら1つ目のreturn文が必ず実行されるため、それ以降のコード(2つ目のreturn文)には処理が絶対に到達しないということをコンパイラが判定…

configure作りたい〜

いまこっそり開発中のプログラムでもconfigureを使って見たいとは思ったものの、configureの作り方とか知らないΣ( ̄□ ̄;) ので勉強してみることに。GNU Autoconf/Automake/Libtool作者: Gary V. Vaughan,Tom Tromey,Ben Elliston,Ian Lance Taylor,でびあん…

sizeof hogeに関するメモ

typedef struct HOGE { uint hoge1; uint hoge2; ... uint hogeN; } hoge; hoge *hg;みたいな構造体とそのポインタがあって、mallocを使ってメモリ割り当てを行う際に、 int num = 10; hg = malloc(num * sizeof hg);と書いていたらなんか動きが変だった。正…