ToDo:
http://shinh.skr.jp/m/?date=20111203#c01
goto もいいんですけど、解放するものが複数あると、
X* x; char* filename = (char*)malloc(100); if (!filename) goto err; sprintf(filename, "%s/%s.txt", hoge, fuga); x = openX(filename); if (!x) goto err; return 0; err: if (x) closeX(x); free(filename);
みたいに if が増えてくのがちょっとイヤですね… C の方が C++ より遅いみたいなことに。
http://homepage1.nifty.com/herumi/diary/1112.html#3
個人的な感覚では、ある程度のサイズのもので semantics が変わる拡張使うのは許せないかな (unused とかは OK)… と思ってたのですが、僕の個人的な感覚に頼るまでもなく、 コンパイラにかかわるものではダメとのこと。
http://www.gnu.org/prep/standards/standards.html#Using-Extensions
(03:56)
前 | 2011年 12月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
if (!filenamxe) goto err1;
...
if (!x) goto err2;
...
err2:
close(x);
err1:
free(filename);
みたいに確保するのと逆順で解放するコードを末尾に書いてその途中にgotoでジャンプするみたいなコードを見る気がするんですけど。
おお、たしかにそれ見ますね。なんかすっぽり頭から抜け落ちてましたそれでいい気がします…