2007-10-05から1日間の記事一覧

実装依存

GCC 拡張の単項 && でラベルのアドレスが取れる。 #include <stdio.h> int f(void (*k)(void)) { printf("Hello "); k(); printf("Earth!\n"); return 0; } int g(void (*k)(void)) { printf("Nice "); k(); printf("Boat!\n"); return 0; } int h(void) { while (f(&</stdio.h>…

うへぇ

新しい GCC だと、単なる一次式の計算に…。 $ cat test.c #include <stdio.h> #include <limits.h> int f(int n, int m) { return (n ? f(n - 1, m + 2) : m); } int main(void) { printf("%d\n", f(INT_MAX, 1)); } $ gcc -O2 test.c $ time ./a.out -1 real 0m0.001s user 0m0</limits.h></stdio.h>…