C

コンパイル結果のキャッシュ

C C++

% ccache gcc ... % ccache g++ ...または, % CC="ccache gcc" CXX="ccache g++" ./configure ...みたいな.

autotools で生成した実行ファイルはただのスクリプトファイルだから

gdb とかするには libtool とかでほげってしないと, % gdb ./hoge ... hoge: not in executable format: File format not recognizedってエラーでてだめ. % libtool --mode=execute gdb ./hogeとかやる.

Glib/Timers のラッパー

てことで,書いた.(ちょうてきとう これで少し楽になった.はっは. #include <iostream> #include <glib.h> #include <unistd.h> using namespace std; class GTimerP { private: GTimer *Timer; gulong microseconds; gdouble time; public: GTimerP() { Timer = g_timer_new(); } ~G</unistd.h></glib.h></iostream>…

undefined reference to `g_timer_continue' / glib の timers 使い方

glibの timers を使おうとして,g_timer_continue を呼ぶと,「うまく言語化できない」などと言って,コンパイルできなかった. というか, g_timer_new/start/stop などは使えるのに,なぜ g_timer_continue が使えない... と思ったのだけど,結論からい…

glib インストール / コンパイル

インストール@Ubuntu % sudo aptitude install libglib2.0-dev パスの通った場所に glib.h ははいらない バージョンを明示的に指定するためなのかな? -I とか -l とかつけないと,エラーいろいろでる. hoge.cpp:10:18: error: glib.h: No such file or di…

コンパイラオプション・gdb

C C++

-g -Wall デバッグ情報をのこす,警告をすべてだす gdb a.out > r run > bt backtrace > l list

bitshift : decimal -> binary / 10進2進変換

C

ビットを扱うのって、苦手な人が多い気がする.自分ふくめ。 目に見えないからわかりにくいんだよね、たぶん。しかし、ビット演算は、つかえると非常に便利だとおもう。まだ便利に使えるほどつかえないけど。 #include <stdio.h> void dec2bin(const int decimal_orig</stdio.h>…

fork

C

forkさせると、プログラムの流れがどうなるのかいまいちわからん。 // fork.c #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> int main() { pid_t pid[10]; int count = 0; for (; count < 10; count++) { pid[count] = fork(); if (pid[count] < 0) { </unistd.h></sys/wait.h></sys/types.h></stdlib.h></stdio.h>…

exec

execl と execv の違いは引数の渡し方。 // exec.c #include <stdio.h> #include <sys/types.h> #include <unistd.h> int main() { printf("execl:\n"); execl("/bin/cat", "cat", "exec.c", NULL); printf("execv:\n"); char *argv[3] = {"cat", "exec.c", NULL}; execv("/bin/cat", argv); </unistd.h></sys/types.h></stdio.h>…

socket クライアント

daytimeに接続. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <sys/types.h> #include <netdb.h> int main() { struct addrinfo info, *res; int sock; FILE *f; char buf[1024]; int err; // ゼロリセット memset(&info, 0, sizeof(struct addrinfo)); // ip…</netdb.h></sys/types.h></sys/socket.h></unistd.h></string.h></stdlib.h></stdio.h>

関数ポインタ

C

#include <stdio.h> void call(void (*f)(const char *), const char *); void print(const char *); void greeting(const char *); int main() { call(print, "sotarok"); call(greeting, "sotarok"); return 0; } void call(void (*f)(), const char *msg) { f(msg)</stdio.h>…

可変長引数

C

printfとかで使われてるあれ。 「...」ってかわいいですね。 #include <stdio.h> #include <stdarg.h> void print_args(int nnum, ...); int main() { print_args(5, 1, 2, 3, 4, 5); return 0; } void print_args(int nnum, ...) { int i = 0, tmp; va_list arg; va_start(arg,</stdarg.h></stdio.h>…

コンパイルとリンク

C C++

http://docs.sun.com/app/docs/doc/805-7886/6j7drf0sr?l=ja&a=view

マージソート

分割した要素を結合するときにはすでにミクロな集合内ではソートされていることが保証されているため線形時間で結合できる。というかんじ。 // merge_sort.c #include "merge_sort.h" void merge_sort(int *array, size_t size) { int div = (int)size/2, *l…

size_t

C

環境依存だとは思うけど、Mac OSX だと、 typedef unsigned long __darwin_size_t; /* sizeof() */ って定義されてた。@ppc/_types.h

クイックソート

クイックソートをC言語で書いてみたら思いのほか書けなくてびっくりした。。そしてへんこんだ。でもまあ、リハビリだと思いつつがんばる。あとあれ、マージソートとの違いは、分割前に並び替えちゃうのか、統治時に並び替えるのか、そこなのよね。 // qsort.…

配列とポインタ

C

そうそう、ものすごく基本的なところではあるけど。配列を関数の仮引数に指定したときってどうなるんだっけーってそんなネタあったよなーと思って。 #include <stdio.h> void print_size(int *size) { printf("--sizeof--\n"); printf("%d\n", sizeof(size)); printf(</stdio.h>…

だめだったリスト

C

http://d.hatena.ne.jp/strkpy/20090313/1236971227 ああーなんか変だなーとおもってたのは,これ,先頭要素の削除とかができないのかw 先頭もポインタにして書き換えないとだめだった.

Makefile

Makefile。それと、リンク。うーん。 //hello.c #ifndef _STDIO_H_ #include <stdio.h> #endif #include "hello_main.h" int main() { int count = 1; hello_main(count); return 0; } // hello_main.h void hello_main(int); // hello_main.c #ifndef _STDIO_H_ #inc</stdio.h>…

リスト

C

なんかなにも整理されてないけどとりあえず。特にfindあたりがひどい。つかinsertもひどいか。。deleteもひどいな。つか全部ひどいか。。。まあなんつーかそうだよねーってかんじだけど。。あーなんだかなー。まあなんていうかポインタあたりの復習にはなっ…

配列のポインタ

C

じゃなくてポインタの配列だったのね. //コレ *argv[];

ポインタと配列

C

ポインタも配列も,変数そのものはアドレスを指し示すという意味では同じだけど, ポインタは,定義するだけじゃサイズが決まらない.ポインタとして定義したものには配列のアドレスを代入するとサイズがわかるようになる.的な... だから,以下のような…

ポインタ

C

ポインタって,なにがややこしいって,ポインタそのものの概念じゃなくて,宣言と使い方だと思うんだけどな. 宣言時には * つけるとそれがポインタって意味になって,使うときは * が無いその変数名がポインタで,* は実体じゃん,それが結構ややこしくね,…