読者です 読者をやめる 読者になる 読者になる

標準出力をcloseするとどうなるのか?

c

標準出力を閉じると、出力されなくなるのか試してみた。 当たり前だけど、出力されなくなった。( Mac OS X で確認 ) gist8b6f99ad7d38734b76c1 $ gcc stdout_close.c $ ./a.out stdout:10 stderr:10 fclose(stdout) stderr:10 $ gcc -v Configured with: --p…

お試しコード

c

昔作ったお試しコードを見つけたので、アップする。 関数ポインタをmallocで確保するって事をやってる。 C言語でオブジェクト指向的なプログラミングをやってみようとして作ったコードだったと思う。 gist65664512fc7c5f930760

変数の有効範囲をどう伝えるか

c

仕事で変数の有効範囲を他者に説明する時に混乱したので整理してみる。 変数の有効範囲は、下記2つの要素で決まる。 宣言箇所( 関数内, 関数外 ) 記憶クラス指定子( extern, static, auto, register )の指定 ソースで表すと gist0473e607c28d6b6d97ff 仕事を…

MISRA-C 2012でのgoto

c

MISRA-C*1 2012では、「gotoを使用しない」が推奨になったようです。確か、2004では必須になっていたはず。 ただし、同一関数内でのジャンプに留めておく事は必須のようです。 同一関数内でgotoを使った方が良い場面って、「多重ループから一気に抜け出す」…

1から100の整数を出力してください( ただし5つの異なる方法を用いて )の11

c

forやめろ -- LL Diver 2014 LT枠 LL DiverのLT「1から100の整数を出力してください( ただし5つの異なる方法を用いて )」をうけてやってきましたが、10個でネタが切れたので終了にします。 慣れもあると思いますが、forループが一番考えやすいです。言語に機…

1から100の整数を出力してください( ただし5つの異なる方法を用いて )の10

c

これまでのやり方 1回目:for 2回目:do while 3回目:while 4回目:再帰 5回目:goto 6回目:擬似terator 7回目:べた書き 8回目:マクロでeach風 9回目:system関数 今回のやり方 1から100を記録したテキストファイルを読んで、出力。

1から100の整数を出力してください( ただし5つの異なる方法を用いて )の9

c

これまでのやり方 1回目:for 2回目:do while 3回目:while 4回目:再帰 5回目:goto 6回目:擬似terator 7回目:べた書き 8回目:マクロでeach風 今回のやり方 system関数を使って、外部コマンドで出力。

1から100の整数を出力してください( ただし5つの異なる方法を用いて )の8

c

これまでのやり方 1回目:for 2回目:do while 3回目:while 4回目:再帰 5回目:goto 6回目:擬似terator 7回目:べた書き 今回のやり方 マクロを使って、each風。無理矢理過ぎる・・・

1から100の整数を出力してください( ただし5つの異なる方法を用いて )の7

c

これまでのやり方 1回目:for 2回目:do while 3回目:while 4回目:再帰 5回目:goto 6回目:擬似terator 今回のやり方 ループを使わないでべた書き。

1から100の整数を出力してください( ただし5つの異なる方法を用いて )の6

c

擬似iteratorで1から100の整数を出力。 ループをシンプルに書けますね。ただし、このやり方だと1個しかiteratorつくれない。_iterator構造体にデータを置けば複数個作れるようになるのですが、今度はカプセル化が微妙になるのです。 これまでのやり方 1回目…

1から100の整数を出力してください( ただし5つの異なる方法を用いて )の5

c

gotoで1から100の整数を出力。 これまでのやり方 1回目:for 2回目:do while 3回目:while 4回目:再帰

1から100の整数を出力してください( ただし5つの異なる方法を用いて )の4

c

再帰で1から100の整数を出力。 これまでのやり方 1回目:for 2回目:do while 3回目:while

1から100の整数を出力してください( ただし5つの異なる方法を用いて )の3

c

今回はwhileで1から100の整数を出力。 これまでのやり方 1回目:for 2回目:do while

1から100の整数を出力してください( ただし5つの異なる方法を用いて )の2

c

今回はdo whileで1から100の整数を出力。 これまでのやり方 1回目:for

1から100の整数を出力してください( ただし5つの異なる方法を用いて )の1

c

forやめろ -- LL Diver 2014 LT枠 LL DiverのLTの1コマで、「1から100の整数を出力してください( ただし5つの異なる方法を用いて )」という話がありました。バカらしいの込みでもいいから5つ以上つくってみたいと思います。 まずはシンプルにforループを使用…

MISRA-C 2012購入した

c

勤め先でもMISRA-C導入を視野に入れているというのもあり、先日購入した。 英語だから読むのがおっくうだけど、読んでいこう。(日本語訳版が早々に出ると嬉しい。) 購入先:http://www.misra.org.uk/shop/buy_now.php

多次元配列のちょっと変わった参照の仕方

c

いきなりですが、配列の値を参照するための a[1] というのは、 *(a + 1) を少しでも気楽に書けるようにするための構文らしいです(こういうのをシンタックスシュガーと呼ぶらしい)。 でもって、*(a + 1) と *(1 + a) の値は同じになりますね?ここで、*(1 + a…

じつはそんなに不思議な現象ではないのかも

c

このコードについて???? コンパイラの不思議 - goinger的日記を読んで軽く気になったので -fno-builtin でビルトインなものを消してみたりして考えみました。たどり着いたのは、C言語はファイル別にコンパイルするというだけの理由ではないかというもの。 た…

ちょっと奇をてらって

c

構造体変数に自分自身のポインタを持たせて、ごにょごにょしてみた。 #include <stdio.h> #include <stdlib.h> struct hoge { struct hoge *self; int i; struct hoge *(*print)(struct hoge *); }; struct hoge *p(struct hoge *v) { printf("%d\n", v->i); v->i += 2; return </stdlib.h></stdio.h>…

GCC 解読室 Wiki*のカウンタ

c

ここ数日で http://wikiwiki.jp/aloha/のカウンタが ココサブログのカウンタを越えた。 ココサブログの方はほとんど書いてないので当たり前といえば当たり前。