!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
※前スレ
C言語なら俺に聞け 160
https://mevius.5ch.net/test/read.cgi/tech/1672191630/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
C言語なら俺に聞け 161
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 0f63-sFbk)
2023/04/21(金) 14:05:20.18ID:rqj2HSDF0990デフォルトの名無しさん (ワッチョイ 13ad-c8RC)
2023/10/30(月) 16:52:46.78ID:bW5EQkS/0 >>989
適当だけどこういうことでは?
{int rc=0; do{ ★始め
処理1
siwtch(x){
case 0: rc=1; break; ★失敗した ※siwtchから抜けるだけでwhileからは抜け出せていない
case 1: break; ★成功だけど処理2は実行しない ※siwtchから抜けるだけでwhileからは抜け出せていない
case 2: break; ★成功で処理2も行う
}
処理2
break; ★成功した
} while(0); if(rc) { ★
異常時処理
}} ★終り
適当だけどこういうことでは?
{int rc=0; do{ ★始め
処理1
siwtch(x){
case 0: rc=1; break; ★失敗した ※siwtchから抜けるだけでwhileからは抜け出せていない
case 1: break; ★成功だけど処理2は実行しない ※siwtchから抜けるだけでwhileからは抜け出せていない
case 2: break; ★成功で処理2も行う
}
処理2
break; ★成功した
} while(0); if(rc) { ★
異常時処理
}} ★終り
991デフォルトの名無しさん (ワッチョイ 1989-FUJr)
2023/10/30(月) 16:58:35.91ID:hHEGE8Ol0 >>990
おっしゃる事、分かります。具体的に書いてくれてありがとうm(_ _)m
おっしゃる事、分かります。具体的に書いてくれてありがとうm(_ _)m
992デフォルトの名無しさん (ワッチョイ 1989-FUJr)
2023/10/30(月) 17:01:08.71ID:hHEGE8Ol0 >>987
はい…
mallocとfreeを確保と解放の例とするのは異論ないです
deferより一つ上位の話は、エラー処理をバグなく、分かりやすく書こうというテーマだ、で合ってますよね。
その上で、deferがないとこんな面倒なのが、deferがあるとこんなに分かりやすい 例がよいのです
確保と解放の書き方検討で、私が検討するのは例えばこんな感じです:
■(1)ある意味のある処理単位が、リソースを 2個以上使う 場合を考えると、1個の場合より検討がよく進む。特に、
■■(1a)初期化が途中で失敗した場合、すでに確保が成功してしまった資源をどう解放するか
■■(1b)資源の変数は最初に、確保処理のエラー戻り値と同じ値で初期化をすると、スッキリする事が多い
■(2)正常ルートでの解放と、エラールートでの解放で、コードを共通とするか、別とするか。
■■(2a)確保、主、開放 の処理を、同じ「関数」で書くのと、別の「関数」に分けるのはどちらが良いか
■■(2b)「goto エラーラベル;」を好きか嫌いか
■(3)プログラマーによる解放処理の前の 「if(確保済みなら)」のガードが、必要なもの(fcloseなど)と、不要なもの(free)があるので、マニュアル確認は要る
もっと語りたいけど、レス分けます、というか時間を置きます。あまり一人が語りすぎると、嫌がる人もいますよね
はい…
mallocとfreeを確保と解放の例とするのは異論ないです
deferより一つ上位の話は、エラー処理をバグなく、分かりやすく書こうというテーマだ、で合ってますよね。
その上で、deferがないとこんな面倒なのが、deferがあるとこんなに分かりやすい 例がよいのです
確保と解放の書き方検討で、私が検討するのは例えばこんな感じです:
■(1)ある意味のある処理単位が、リソースを 2個以上使う 場合を考えると、1個の場合より検討がよく進む。特に、
■■(1a)初期化が途中で失敗した場合、すでに確保が成功してしまった資源をどう解放するか
■■(1b)資源の変数は最初に、確保処理のエラー戻り値と同じ値で初期化をすると、スッキリする事が多い
■(2)正常ルートでの解放と、エラールートでの解放で、コードを共通とするか、別とするか。
■■(2a)確保、主、開放 の処理を、同じ「関数」で書くのと、別の「関数」に分けるのはどちらが良いか
■■(2b)「goto エラーラベル;」を好きか嫌いか
■(3)プログラマーによる解放処理の前の 「if(確保済みなら)」のガードが、必要なもの(fcloseなど)と、不要なもの(free)があるので、マニュアル確認は要る
もっと語りたいけど、レス分けます、というか時間を置きます。あまり一人が語りすぎると、嫌がる人もいますよね
993デフォルトの名無しさん (ワッチョイ 1989-FUJr)
2023/10/30(月) 17:09:39.89ID:hHEGE8Ol0 てかキータで書いて、皆さんの意見を聞いて修正していったり、してみようかな…
994デフォルトの名無しさん (ワッチョイ 1989-FUJr)
2023/10/30(月) 17:17:16.34ID:hHEGE8Ol0 とりあえず次スレ立てました。即死防止の保守書き込みは要らない、で良いのかな?
C言語なら俺に聞け 162
https://mevius.5ch.net/test/read.cgi/tech/1698653580/
C言語なら俺に聞け 162
https://mevius.5ch.net/test/read.cgi/tech/1698653580/
995デフォルトの名無しさん (スプッッ Sd73-cQ99)
2023/10/30(月) 18:42:32.58ID:Ccd5zWuDd996はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9b3e-g5YV)
2023/10/30(月) 22:27:42.13ID:I7fISnX+0 Golang の defer はあくまで関数の終わりまで遅延させる (ブロックの終わりではない) ので
呼び出される defer の個数が動的になりうるんだな。
https://go.dev/tour/flowcontrol/13
この挙動も C には馴染まなさそうだな。
呼び出される defer の個数が動的になりうるんだな。
https://go.dev/tour/flowcontrol/13
この挙動も C には馴染まなさそうだな。
997デフォルトの名無しさん (ワッチョイ 1379-JwVi)
2023/10/30(月) 22:37:34.66ID:n3VNJX5I0 俺は某画像ライブラリのリソーストラッカーみたいに開放が必要な物を全部紐付けて後で開放する仕掛けを使ってる
まあCには何にも縛られないのが良いんだし好きにしたらいいよ
まあCには何にも縛られないのが良いんだし好きにしたらいいよ
998デフォルトの名無しさん (ワッチョイ d95d-kYJB)
2023/10/30(月) 23:34:44.67ID:2SouKz/I0 構文的にはC#っぽく
using (double* p = malloc(...); free(p)) {
p を使う
}
でも良いかも知れない
これだと1ループのforに似ててCに良く馴染むな
もちろんreturnとかexitで脱出してもfreeは呼ばれる
using (double* p = malloc(...); free(p)) {
p を使う
}
でも良いかも知れない
これだと1ループのforに似ててCに良く馴染むな
もちろんreturnとかexitで脱出してもfreeは呼ばれる
999デフォルトの名無しさん (ワントンキン MM53-wL8D)
2023/10/31(火) 10:19:02.32ID:i2gAy2CGM そんなもんが規格に入るわけないんだから無駄話だろ
1000デフォルトの名無しさん (ワントンキン MM53-wL8D)
2023/10/31(火) 10:19:24.66ID:i2gAy2CGM うめ
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 192日 20時間 14分 5秒
新しいスレッドを立ててください。
life time: 192日 20時間 14分 5秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【子ども・子育て支援金】来年4月から徴収、月収50万円なら月600円程度…健保連試算 [蚤の市★]
- 【(・(ェ)・)】駆除数17倍、クマ1頭の焼却に灯油100㍑で今季7000㍑以上使用した施設も…処理に追われる自治体 [ぐれ★]
- なぜ立花孝志氏の言葉は信じられたのか…"異例の逮捕"が浮き彫りにした「SNSの危険な病理」 ★2 [ぐれ★]
- 【芸能】田中みな実 年始に実家に泊まらない理由明かす 「終わった感じがしちゃう。早く港区に戻らなきゃみたいな」 [冬月記者★]
- 高市首相告白「『なめられない服』を選ぶことに数時間を費やしました」「外交交渉でマウント取れる服、買わなくてはいかんかもなぁ」★4 [ぐれ★]
- 「加熱式たばこ」の受動喫煙、「紙巻き」同様の対策強化を検討へ…厚労省の専門委が議論スタート [蚤の市★]
- 2025 SUPER FORMULA Lap19
- ハム専ファンフェス
- 2025 SUPER FORMULA Lap18
- 競輪実況★1606
- こいせん 全レス転載禁止
- 京都競馬4回5日目エリザベス女王杯★3
- タリバン、G20遅刻、夕食会欠席 。 すまんこいつ何しに行ったの? [974680522]
- 【速報】高市早苗、G20サミット”社長出勤” [614650719]
- 【悲報】高校ラグビー、マジで終わる… 強豪校ですら部員集まらず廃部へ この国の若者ってほんとトライしなくなったよな [452836546]
- 【📛専】とうふさんすこすこ😊👎スレッド【とうふゲームズ🏡】
- 中国の謎店員さん、なぜか謎美人客と一緒に謎ダンスを踊りだしてしまう… [963243619]
- 【速報】高市、今度はロシアに喧嘩を売る [329271814]
