c

Mac OS X で lcc

c

Mac OS X で lcc (lcc, A Retargetable Compiler for ANSI C) を使う方法普通にビルドできます $ git clone https://github.com/drh/lcc.git $ cd lcc $ mkdir build $ export BUILDDIR=./build $ make rcc $ build/rcc -target=x86/linux tst/8q.c build/rcc…

lsのソースを読みました

C

lsコマンドって一番使うコマンドじゃないでしょうか.おそらく僕が始めて使ったコマンドもlsだと思います.その時,lsのコマンドの出力が綺麗に整列されて出力されるのがすごく不思議でした.今考えれば端末幅取得してごにょごにょしてるんだろうな,という…

関数ポインタ

gtkを勉強してて、コールバック関数を登録する際、 g_signal_connect(button,"clicked",G_CALLBACK(callback),(gpointer)"button 1"); とかしてて、このG_CALLBACK()って何してるんだろうと思ったけど、 typedef void (*GCallback) (void); #define G_CALLBA…

Cでnon-blocking IO

こんな感じにすればできるらしい。 #include <stdio.h> #include <termios.h> #include <fcntl.h> #include <time.h> int main(int argc, char const* argv[]) { struct termios save_settings; struct termios settings; char c; tcgetattr(0,&save_settings); settings = save_settings; setting</time.h></fcntl.h></termios.h></stdio.h>…

2次元配列を関数に渡す

C

なんか前にも似たようなこと書いた気がするけど、2次元配列を関数に渡す場合普通だったらポインタ配列を使うんだろうけど、 #include <stdio.h> void foo1(int *data[],int row,int column){ int i,j; for(i = 0;i < row;i++){ for(j = 0;j < column;j++){ printf("%d</stdio.h>…

構造体で任意の長さのデータを扱う

C

ICMPのパケットを見てはじめて気がつきましたが、こんなこともできるんですね。 これは…気づかなかった…。言われてみればそうだけど。というかいいのかこれ…。

関数へのポインタ

C

今日関数へのポインタを作ろうと思ったら度忘れしたのでめも。 基本形: 戻り値の型 (*名前) (引数); 例 int (*func) (int,char *); void (*func) (); double (*func) (double,void(*)(int,int)); 関数名は実際は関数へのポインタなので、そのまま代入できる…

メモ:ポインタのインクリメントについて

C

int *pについて。+は値が1増加したことを示す。はじめのp,p[0],p[1]の値は式の評価時時点での値。その次が評価終了時点での値。 *と++は優先順位が等しい(右から左へ評価される) 式 評価値 p p[0] p[1] p p[0] p[1] *++p p[1] + - - - - - ++*p = ++(*p) p…

ポインタに関する考察

自分はもう、ポインタについて理解したと思っていましたが、昨日今日とプログラミングしてみて全然分かってないということが分かったので、自分なりにメモしておこうと思います。もし間違ってるところがあれば指摘いただけるとうれしいです。 参考 ポインタ…

vimからcl.exeを呼び出してcをコンパイル

vim c

学校の授業では,windows環境でcをやっていますが、授業で作るプログラムなんてせいぜい数百行です。なので、このときに、vimから :!cl hoge.c なんてできるといいのですが、初期状態だとただのpathの通ってないコマンドプロンプトが起動してコンパイルできな…