[過去ログ] C言語なら俺に聞け 161 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(1): (ワッチョイ 0f63-sFbk) 2023/04/21(金)14:05 ID:rqj2HSDF0(1) AAS
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
外部リンク:paiza.io
外部リンク:ideone.com
外部リンク:codepad.org

C17
外部リンク[pdf]:www.open-std.org
省14
903
(1): (ワッチョイ 2bb6-AzOG) 2023/10/20(金)22:48 ID:gDJgEYng0(1) AAS
Cでつくったもので自慢のものある?
904: (ワッチョイ ddf0-5RLD) 2023/10/21(土)12:56 ID:Auba50wB0(1) AAS
ラズパイの話するならPicoか否か書けよ
905: (ワッチョイ 7a79-Idv/) 2023/10/21(土)13:34 ID:ifbOBJO10(1) AAS
ラズパイの話するな
906: (ワッチョイ 1934-egvn) 2023/10/21(土)13:40 ID:m23W7dra0(1) AAS
>>903
通信プロクシとテストデータ作成ツール^^
しょうもない物しか作ってないわスマンな
907: (ワントンキン MM8a-xqvO) 2023/10/21(土)21:29 ID:t2gg/cweM(1) AAS
作ったものは数々あるが、
自慢できるものはない
908
(1): (ワッチョイ 9946-5z4m) 2023/10/21(土)22:19 ID:9n8k9yEZ0(1) AAS
恥の多いプログラムを作って来ました。
909: (アウアウウー Sa09-6i8i) 2023/10/22(日)11:30 ID:GXjFDCr1a(1) AAS
そもそも業務で造ったものは守秘義務あるからな
910: (ワッチョイ 7a79-Idv/) 2023/10/22(日)12:04 ID:7Lbl94Rb0(1/2) AAS
>>908
プログラマー失格やな!
911
(1): (ワッチョイ d663-iKuA) 2023/10/22(日)12:08 ID:+M4dXZ790(1/2) AAS
作っていて、恥ずかしさを感じないとすれば、それこそ失格だ
人は失敗の中から多くを学ぶ
912: (スッップ Sd9a-ilqh) 2023/10/22(日)12:41 ID:WtUZjflvd(1) AAS
恥とかそんなのとは違う
ビジネスとはスピードと品質のトレードオフ
そのバランスを考えられないのがプロとして恥
913: (ワッチョイ dd14-PKJr) 2023/10/22(日)12:41 ID:DsuvifSY0(1) AAS
>>911
太宰治の人間失格とかけてんだろ
気付いてやれよ
914: (ワッチョイ 7aad-CfcT) 2023/10/22(日)13:27 ID:lT9uYjte0(1) AAS
>>900
それってLinuxではないOSで動く場合?
Linux入れちゃったらドライバとそれに対するライブラリだけの問題で言語は関係なくなるよね。
915: (ワッチョイ 7a79-Idv/) 2023/10/22(日)13:30 ID:7Lbl94Rb0(2/2) AAS
自分で調べろよそれぐらい…お前もプログラマー失格やな!
916: (ワッチョイ 5d01-iKuA) 2023/10/22(日)19:09 ID:1z8BeiKk0(1) AAS
生まれてすみません
917: (ワッチョイ d663-iKuA) 2023/10/22(日)19:19 ID:+M4dXZ790(2/2) AAS
いいってことよ
918: (ワイーワ2 FF62-6i8i) 2023/10/24(火)16:01 ID:ju9L4gE1F(1) AAS
おかえり
919: (ワッチョイ ba7c-Habm) 2023/10/26(木)00:49 ID:89nTklyv0(1) AAS
C23でC11ぶりに更新ってC標準化委員会(?)だかはサボり過ぎじゃねーか。
C++なみとは言わんが5年ぐらいごとに見直せや。
nullptrとか入るの遅過ぎる。
deferも無いとかアホすぎる。
920
(1): (ワッチョイ 7a79-Idv/) 2023/10/26(木)02:57 ID:q3UKhsX80(1) AAS
いつまでも未完成のサグラダファミリアみたいなC++とは違ってCは生まれた時から完成してるから
後々機能追加したところでそいつの自己満でしかない
未完成のC++から逆輸入されて良かったことなんて行コメント程度しかない
921: (スフッ Sd9a-dytz) 2023/10/26(木)08:37 ID:FkoAeS+Vd(1/6) AAS
コンパイラがC11のgets_s()関数に対応してないんですが、どうすればいいですか?
922: (スフッ Sd9a-dytz) 2023/10/26(木)08:37 ID:FkoAeS+Vd(2/6) AAS
コンパイラがC11のgets_s()関数に対応してないんですが、どうすればいいですか?
923
(2): (ワッチョイ dd14-PKJr) 2023/10/26(木)09:02 ID:nJ6kaeWr0(1) AAS
あきら🍈
924: (スフッ Sd9a-9f78) 2023/10/26(木)09:08 ID:FkoAeS+Vd(3/6) AAS
>>923 あきらめてvisual studioでgets_s()関数を使えていますが、vscodeの普段使っているコンパイラでは
使えません
925: (スフッ Sd9a-9f78) 2023/10/26(木)09:08 ID:FkoAeS+Vd(4/6) AAS
>>923 あきらめてvisual studioでgets_s()関数を使えていますが、vscodeの普段使っているコンパイラでは
使えません
926
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 8e3e-exru) 2023/10/26(木)09:11 ID:oN20rU1J0(1/2) AAS
自分で書いたってそんなに時間はかからんだろう。
行がバッファより長いときや引数が条件を満たさないときに
制約ハンドラを呼ぶってだけだぞ。
927: (スフッ Sd9a-9f78) 2023/10/26(木)09:13 ID:FkoAeS+Vd(5/6) AAS
>>926 結局gets()関数の代用はfgets()しかないというこですね
928
(1): (ワッチョイ d663-iKuA) 2023/10/26(木)09:38 ID:G4ruVh0t0(1) AAS
自分で作れよ
Cってそういうもんだ
929: (スフッ Sd9a-9f78) 2023/10/26(木)10:11 ID:FkoAeS+Vd(6/6) AAS
>>928 自分で書きました 
930: (スッップ Sd9a-Habm) 2023/10/26(木)11:50 ID:ZES507rzd(1) AAS
>>920
そんなんだからリーナスだってぶち切れるんだぞ。
931: (スッップ Sd9a-SL8W) 2023/10/26(木)13:16 ID:62xlwgird(1) AAS
winでguiアプリ作る時とかCランタイムなんて全く使わないでしよ
今更Cで作るかは置いといて
932: (ワッチョイ f969-Dq0e) 2023/10/26(木)13:20 ID:S8nCpIo20(1/4) AAS
(σ・∀・)σゲッツ!!
933: (ワッチョイ d6ab-OCAv) 2023/10/26(木)14:24 ID:Qn92XRBA0(1) AAS
文字列周りのあれこれは Cランタイムのお世話も併用することが
934: (スフッ Sd9a-Cy5w) 2023/10/26(木)15:12 ID:ES29OdTad(1) AAS
TCHAR無視でASCIIzしか使わないならいけるかな
memcpyとかmallicとかも普通に使えるしな
TCHARのUNICODE版の文字列処理ってもうCランタイムと言うのは無理ありそう
末尾にに_s付いたのとか先頭にl付いたのとか
もう亜種増え過ぎで覚えられんくなった
あれはCランタイムじゃなくてwin32apiだわ
935
(1): (ワッチョイ 8e5f-ANn9) [sega] 2023/10/26(木)17:56 ID:SEjxiCyL0(1/2) AAS
C言語でGC実装したライブラリあったよね
あれって今でも使われてんの?
936
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 8e3e-exru) 2023/10/26(木)18:27 ID:oN20rU1J0(2/2) AAS
>>935
Boehm GC のこと?
937: (ワッチョイ 8e5f-ANn9) 2023/10/26(木)21:04 ID:SEjxiCyL0(2/2) AAS
>>936
そうそうそれそれ
思い出したけど w3m とかで使ってたよな
w3mが現役ってことはboehmgcも現役なんかね
938: (ワッチョイ f969-Dq0e) 2023/10/26(木)23:37 ID:S8nCpIo20(2/4) AAS
Boehm GC使ってるぞ
つうかUnityのランタイムはBoehm GCが使われてる
939: (ワッチョイ f969-Dq0e) 2023/10/26(木)23:41 ID:S8nCpIo20(3/4) AAS
Unity使ってるゲームはごまんとあるけど、敢えてGCを切ってるゲームも中には有るかも知れんが、ほとんどのゲームは裏でBoehm GCが動いている
要するに知らないだけで、Boehm GCはメチャクチャ使われてる
無知は罪だなw
940: (ワッチョイ f969-Dq0e) 2023/10/26(木)23:50 ID:S8nCpIo20(4/4) AAS
> ほとんどのゲーム
ほとんどのUnity使ったゲームでだな
それと最近UnityのBoehm GCにインクリメンタルGCが追加された
それまではStop The World(STW)のインパクトが凄くて、みんな最後にはなるべくGCが発生しないようにするチューニングが待っていたw
941: はちみつ餃子◆8X2XSCHEME (ワッチョイ 8e3e-+JM7) 2023/10/27(金)00:08 ID:heVGcbpM0(1/3) AAS
Boehm GC はマシンスタックも走査するようなデザインだからアーキテクチャに依存する部分がいっぱいあるし、メンテナンスもし続けないとすぐ実情にあわなくなって破綻すると思う。
逆に言えば採用されてちゃんと動いているのはちゃんとメンテナンスされてるからだろう。
それなりに活発に利用も開発もされてると言えるんじゃないか。

プログラミング言語処理系のいくつかで採用事例を見たことはある。
942: (ワッチョイ f969-Dq0e) 2023/10/27(金)00:26 ID:u2CdPYGW0(1) AAS
今も活発に開発されてるよ
まぁリリースは半年とか年一ぐらいだけどね
943
(1): (ワッチョイ cee7-ANn9) 2023/10/27(金)11:18 ID:dEbuX89/0(1) AAS
そうなのかUnityすげーな
そもそもUnityがC言語だったのも知らんかったわ
C言語でGUIなゲーム作れるならやってみるわ
ありがとう
944: (ワッチョイ cd10-JD/u) 2023/10/27(金)11:33 ID:9P66tx0i0(1) AAS
ゲームのMOD管理や改造ツール探してると結構間違ってソース配布ページへ飛ばされる。
ファイル拡張子が*.cなトコは無いにしても、*.cppなとこは多いね。
945: はちみつ餃子◆8X2XSCHEME (ワッチョイ 8e3e-exru) 2023/10/27(金)12:18 ID:heVGcbpM0(2/3) AAS
>>943
dotNET が Unity の基礎にあるからユーザが使うレイヤでは C# が前提だよ。
ただ、それを実行するランタイムサポートの中には低レイヤ寄りの部分も当然あるし、
そこで Boehm GC が使われているって話。

C で書いたモジュールを呼び出すことは出来るんだけど…。
「C でゲームを作る」のがやりたいなら Unity は全然向いてない。
946: (ワッチョイ ddf4-U54k) 2023/10/27(金)12:22 ID:gE38RsN70(1) AAS
そもそもC言語でGUIゲーム作れるじゃんUnityじゃなくても
947: (ワッチョイ fade-UUkb) 2023/10/27(金)13:36 ID:DWeOppJn0(1) AAS
公開して
948: (ワッチョイ 999f-dytz) 2023/10/27(金)13:59 ID:CZ4Htjtu0(1) AAS
後悔しました
949: (ワッチョイ 7aad-iKuA) 2023/10/27(金)15:35 ID:sXR1+sXw0(1) AAS
航海します
950: (ワッチョイ c18f-BTDU) 2023/10/27(金)21:03 ID:nBxrDXuS0(1) AAS
Cでゲームかぁ
面倒くさそう
951: (ワッチョイ d663-iKuA) 2023/10/27(金)21:16 ID:qIG6QpEs0(1/3) AAS
Cじゃなくてもめんどくさそうって言い出しそう
952: (ワッチョイ dd14-PKJr) 2023/10/27(金)21:30 ID:t+LCPq2M0(1) AAS
Windowsのクロンダイク作ろうぜ
あれならもともとCのはず
953
(1): (ワッチョイ d663-iKuA) 2023/10/27(金)21:37 ID:qIG6QpEs0(2/3) AAS
MS-DOSの頃はアマチュアの作ったゲームがたくさんあったな
ゲームメーカーの商品より優秀なのもあったし、
メーカーから訴えられた個人もいたな。
メーカー側が取り下げた様だが、
もしかしたら訴えた事実がなかったかも知れない
その後倒産したという噂を聞いた
Windowsになってからは、VBで作る人が多かった
954: はちみつ餃子◆8X2XSCHEME (ワッチョイ 8e3e-exru) 2023/10/27(金)21:44 ID:heVGcbpM0(3/3) AAS
アマチュアが作っているゲーム作品の数で言えば今のほうがずっと多いと思うが。
955: (ワッチョイ d663-iKuA) 2023/10/27(金)22:25 ID:qIG6QpEs0(3/3) AAS
そうなのか・・・
最近はゲームしてないので知らないんだw
956: (ワッチョイ 7a79-Idv/) 2023/10/27(金)22:28 ID:M9GgCmOO0(1) AAS
今はvやutuberに媚びたゲーム作れば配信で遊んでくれるから一気にプレイヤー数も増えるよ
957
(1): (ワッチョイ 81f4-WJPr) 2023/10/28(土)11:42 ID:vcHM6tqr0(1) AAS
>>953
すっごい適当なことばっかり言うねw
958: (ワッチョイ 5359-g3nS) 2023/10/28(土)12:43 ID:p7wdBTPe0(1) AAS
>>957
Bio_100%とかタカリスなんて知らないせだいなんだろうな
959: (ワッチョイ 199f-CP9B) 2023/10/28(土)13:20 ID:CS7+IID10(1) AAS
ゲームエンジンもライブラリもろくになかった時代にC言語とアセンブラを駆使して
高レベルなゲームを作れるアマチュアプログラマがたくさんいた
(Unityで作るより高スキルが求められる)という話であって、
アマチュア/インディーズゲームのリリース数が論点というわけじゃないんじゃね?w
960: (ワッチョイ 215f-H9h+) 2023/10/28(土)13:35 ID:t5G+utQT0(1) AAS
1997年あたりにワイヤフレームだけどゴリゴリの3Dで8台で競艇するゲームは当時かなりオーパーツ感あった
波でグラグラゆれたり、あの当時でステージメイキングも確か出来たし、誰か知ってる人おらんじゃろうか
961: (ワッチョイ 5351-zW/F) 2023/10/28(土)14:14 ID:wcF/YB9E0(1) AAS
よそできけよ
962
(1): (ワッチョイ 937c-cQ99) 2023/10/29(日)00:56 ID:GrwAVmld0(1) AAS
C言語標準規格、せめて5年毎ぐらいに見直してくれればなぁ。
そしたらとっくにnullptrは入ってただそうし。もしかしたら deferや lambdaも入ってたかもしれん。
963: (ワッチョイ 5351-zW/F) 2023/10/29(日)08:16 ID:d4XtWcMl0(1) AAS
規格に対してまあそういう考えの人がいるのも分かるが、全体としては改定に対しての需要というか声は小さかったってことでしょ
964: (ワッチョイ 1379-JwVi) 2023/10/29(日)08:37 ID:x+5RB5aB0(1/2) AAS
どれも今更すぎていらんわ
そういうの絶対必要って奴はとっくにC言語ではない何かを使ってるでしょ
965
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 9b3e-g5YV) 2023/10/29(日)09:22 ID:C0ma4yse0(1/3) AAS
>>962
C17 がわずかな保守で終わってることから察しなよ。
見直した結果として変更が要らんという判断をしたんだ。

C に defer を入れる意味はない。
提案として出ている以上は欲しいと思う人もいるんだろうけど。
あれは panic とかがあっても後始末するというところが価値なので
そういうのがない C で関数の終わりに後始末したけりゃ関数の終わりに書けばいい。
例外処理も含めて入れるってのだとなおさら無理だと思うし。
いまさらランタイムを分厚くする方向の機能を言語コアに入れるのは賛成を得られるはずがなさそう。

ラムダ式はまだ可能性がなくもなさそうに思うが……
省4
966: (ワッチョイ 9b5f-zW/F) 2023/10/29(日)09:22 ID:+KTUg2vO0(1) AAS
継続メンテナンスが必要なのはだいたいC89の頃のプロダクトだったりするので
C言語自体の規格アップデートはさほど必要とされていないのね
967: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9b3e-g5YV) 2023/10/29(日)10:51 ID:C0ma4yse0(2/3) AAS
モダンな機能が必要なら C++ を使えばいいって言えてしまうってのもあるしな。
C23 は刷新が大きいけど、新しい機能を入れるというよりは
あまりにも駄目すぎるところを (C++ の後追いをする形で) 改良するって感じだし。
968
(2): ◆QZaw55cn4c (ワッチョイ 9bba-A9tB) 2023/10/29(日)15:22 ID:YxpLOPna0(1/2) AAS
C99 からの無名構造体は廃止してほしいねえ、あれでC++との互換が失われた。
構造体にコンストラクタを記述できるようにした方がマシだったと思う…
969: ◆QZaw55cn4c (ワッチョイ 9bba-A9tB) 2023/10/29(日)15:22 ID:YxpLOPna0(2/2) AAS
C99 からの無名構造体は廃止してほしいねえ、あれでC++との互換が失われた。
構造体にコンストラクタを記述できるようにした方がマシだったと思う…
970: (ワッチョイ eb63-c8RC) 2023/10/29(日)15:24 ID:V/yNBYFm0(1) AAS
コンストラクタ用意したら、それはもはやCではない
971: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9b3e-g5YV) 2023/10/29(日)16:10 ID:C0ma4yse0(3/3) AAS
>>968
コンストラクタこそ要らないだろ。
関数として書けば済む話だから。

ああいうのは色んな機能と連携して便利になるので
個々に見てしまうとたいして便利ではない。
972: (ワッチョイ 1379-JwVi) 2023/10/29(日)17:23 ID:x+5RB5aB0(2/2) AAS
>>968
Cでtypedef+無名構造体/共用体のペアはstruct tag書式より使われてると思うが
これはstructをいちいち書かされるC固有の仕様の問題であって、C++では最初から型宣言自体のやり方が違う
つまりCの仕様をC++に合わせる意味は無く、C++との互換性はどうでもいい
973
(2): (ワッチョイ d95d-kYJB) 2023/10/29(日)22:25 ID:ce2BuRgD0(1) AAS
>>965
例外の無いCでのdeferの意味は、単に後処理(デストラクタ)をコンストラクタ(Cではmallocや初期化関数)の直下に書けるという意味がある
関数の下に書けばいいといっても、gotoで飛ばしてんじゃ、プログラミング言語として欠陥が有ると思うよ
goto使うな→エラー処理で使えば綺麗に書けるよ!って、やっぱおかしいだろw
974
(2): (ワッチョイ 1989-FUJr) 2023/10/29(日)23:50 ID:eMkvRHiW0(1) AAS
defer って分からんのですが、関数単位での atexit() みたいなもの?
975
(1): (ワッチョイ d95d-kYJB) 2023/10/30(月)00:11 ID:2SouKz/I0(1/3) AAS
double* q = malloc(something);
defer { free(q); }
↑これ見れば一目瞭然だな
exitと関数やブロックを抜ける時に発動する
けど、Cは書かれた通りに動くという前提を少し逸脱してんだよね
それでも絶対便利ではある
難しい問題だな
976: (ワッチョイ 1989-FUJr) 2023/10/30(月)00:12 ID:hHEGE8Ol0(1/10) AAS
合ってるよね、うん

それ(他言語の defer 相当機能)って、問題解決にC言語を採用する環境では、OS上のプロセスの切り出し単位の設計、にマッピングすれば済む事ではないのかな?

建設的な議論の参考ネタとして:
perl言語が嫌われた理由の一つに「同じ事をいろんな書き方で書ける」言語設計ポリシーがあって、それは他人が書いたコードをメンテする立場だと「あらゆる書き方に精通してないとメンテできない」デメリットになり

pythonはそれを反面教師として「同じ事はだいたいみんな同じ書き方になるような言語設計を目指す」ポリシーにした、と認識してます
977: (ワッチョイ 1989-FUJr) 2023/10/30(月)00:33 ID:hHEGE8Ol0(2/10) AAS
ああ、ブロック単位なのね…

とすると、上手なC言語のプログラマー達が習慣的にやってきた方法は以下ですよね:

■実装すべき処理を関数にマッピングするとき(主処理、失敗時処理を)細かく分ける
■関数をイベントハンドラとして「登録する」流儀の ミドルレイヤを書いて、そのミドルシステム上で 実装対象の「意味のある処理単位」を書くよう、プロジェクト単位でコーディングルールを定め、守り&守らせ
■◯◯失敗時には△△を行う、を明確に設計し実装して、それが分かりやすい納入プログラムとする

で解決してきた、と思います。

つまり defer 機能がなくても同じ事をやる手法は既に確立している。
前のレスでの主張と合わせ、defer 機能を追加しないのが正解、と言いたいです
978
(1): (ワッチョイ 9b5f-zW/F) 2023/10/30(月)01:02 ID:tKZ3J0Lw0(1) AAS
breakでいつでもブロックを離脱できればgotoより明確でスムーズでかっこよくdeferっぽいことできるよな
979: (ワッチョイ 937c-cQ99) 2023/10/30(月)01:09 ID:SHIqNVOV0(1) AAS
かっこいいかなぁ、、、
980
(1): (ワッチョイ 1989-FUJr) 2023/10/30(月)01:25 ID:hHEGE8Ol0(3/10) AAS
>>978

{int rc=0; do{ ★始め
処理
rc=1; break; ★失敗した
処理
break; ★成功した
} while(0); if(rc) { ★
異常時処理
}} ★終り

とかそういう話?
省2
981: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9b3e-g5YV) 2023/10/30(月)09:24 ID:I7fISnX+0(1/3) AAS
>>975
Go の defer に倣うなら defer 文に書けるのは関数かメソッドの呼出し。
(式一般、文一般を書けるわけではない。)
呼出しは関数の末尾だが引数は書いてある場所で評価されるというルール。
C 風の文法で書くなら

double* q = malloc(something);
defer free(q);
q=NULL;
return;

というように書いても malloc した場所はちゃんと free されることになる。
省4
982: (アウアウウー Sad5-g+2W) 2023/10/30(月)10:15 ID:xnp7PI6ya(1/2) AAS
>>973-974
Nim の defer 良いよね
983: (アウアウウー Sad5-g+2W) 2023/10/30(月)10:15 ID:xnp7PI6ya(2/2) AAS
>>973-974
Nim の defer 良いよね
984
(1): (ワッチョイ 1989-FUJr) 2023/10/30(月)10:17 ID:hHEGE8Ol0(4/10) AAS
正常ルートは終わる時 q==NULL なのに、その前の
defer free(q) したときのqの値でfree() するんですね

うへぇ…
誤解釈してバグ出しそう

てかこれは、ひねり出された意地悪サンプルで…実際のプログラミングでdefer式が効果的となる使用例ではない、ですよね?
985: (ワッチョイ 1989-FUJr) 2023/10/30(月)10:34 ID:hHEGE8Ol0(5/10) AAS
この話で改めてあぶり出されるのは、
あるプログラミング言語を深く理解して「書ける」「読める」ようになることには「自分なりの 上手なエラー処理の書き方 を探して身に付ける」事が含まれる、って事ですよね。

それは人類の資産なんだけど、実際の存在場所は あまたのプログラマー達の脳内 であって、一朝一夕に書き換えられる物じゃない。
だから言語仕様を改定して新機能を足すのは、新言語を作る時よりは慎重になる必要がある、と解釈しました
986: (スプッッ Sd73-cQ99) 2023/10/30(月)11:45 ID:Ccd5zWuDd(1/2) AAS
nullptrはもっと早く入れるべきだった。
987
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 9b3e-g5YV) 2023/10/30(月)11:57 ID:I7fISnX+0(2/3) AAS
>>984
Go でどうだか知らんけど C に defer を入れたとしたらというテーマでの話なら
malloc と free を対応づけるのは考えられる用途の筆頭でしょ。

逆にこういう変則的な評価規則を持ち込まないとしたら、
つまり defer 文に書いたものが単に return の直前に評価されるだけということにしたら
途中で書き換えられる可能性が出てきて
前準備と後始末が対応づいているかどうか一目瞭然とはいかなくなる。

どこかしらでなんか汚い感じにはなるよ。
そういう汚さを受け入れてもなお欲しいほどの利便性かというとやっぱり疑問は残る。
汚さを受け入れていいなら goto の汚さを受け入れるのとそんなに差があるとも思えないし。
988
(1): (ワッチョイ d95d-kYJB) 2023/10/30(月)12:40 ID:2SouKz/I0(2/3) AAS
>>980
意地でもgoto使いたくない時にはそれでもいいけど、それの欠点は中にswitch文を書くと、breakで抜けれるのはswitch文からだけになる事だな
自分ではwhileを抜けた気になって実は抜けてないという、微妙なバグを生み出す可能性があるなw
989
(1): (ワッチョイ 1989-FUJr) 2023/10/30(月)16:19 ID:hHEGE8Ol0(6/10) AAS
>>988
do {...} while(0)
なので、必ず1回実行し、2回目はないです
990
(1): (ワッチョイ 13ad-c8RC) 2023/10/30(月)16:52 ID:bW5EQkS/0(1) AAS
>>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
省4
991: (ワッチョイ 1989-FUJr) 2023/10/30(月)16:58 ID:hHEGE8Ol0(7/10) AAS
>>990
おっしゃる事、分かります。具体的に書いてくれてありがとうm(_ _)m
992: (ワッチョイ 1989-FUJr) 2023/10/30(月)17:01 ID:hHEGE8Ol0(8/10) AAS
>>987
はい…
mallocとfreeを確保と解放の例とするのは異論ないです

deferより一つ上位の話は、エラー処理をバグなく、分かりやすく書こうというテーマだ、で合ってますよね。
その上で、deferがないとこんな面倒なのが、deferがあるとこんなに分かりやすい 例がよいのです

確保と解放の書き方検討で、私が検討するのは例えばこんな感じです:

■(1)ある意味のある処理単位が、リソースを 2個以上使う 場合を考えると、1個の場合より検討がよく進む。特に、
■■(1a)初期化が途中で失敗した場合、すでに確保が成功してしまった資源をどう解放するか
■■(1b)資源の変数は最初に、確保処理のエラー戻り値と同じ値で初期化をすると、スッキリする事が多い

■(2)正常ルートでの解放と、エラールートでの解放で、コードを共通とするか、別とするか。
省4
993: (ワッチョイ 1989-FUJr) 2023/10/30(月)17:09 ID:hHEGE8Ol0(9/10) AAS
てかキータで書いて、皆さんの意見を聞いて修正していったり、してみようかな…
994
(1): (ワッチョイ 1989-FUJr) 2023/10/30(月)17:17 ID:hHEGE8Ol0(10/10) AAS
とりあえず次スレ立てました。即死防止の保守書き込みは要らない、で良いのかな?

C言語なら俺に聞け 162
2chスレ:tech
995: (スプッッ Sd73-cQ99) 2023/10/30(月)18:42 ID:Ccd5zWuDd(2/2) AAS
>>994
乙。
あなたの男気に女気に惚れました。
996: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9b3e-g5YV) 2023/10/30(月)22:27 ID:I7fISnX+0(3/3) AAS
Golang の defer はあくまで関数の終わりまで遅延させる (ブロックの終わりではない) ので
呼び出される defer の個数が動的になりうるんだな。
外部リンク:go.dev
この挙動も C には馴染まなさそうだな。
997: (ワッチョイ 1379-JwVi) 2023/10/30(月)22:37 ID:n3VNJX5I0(1) AAS
俺は某画像ライブラリのリソーストラッカーみたいに開放が必要な物を全部紐付けて後で開放する仕掛けを使ってる
まあCには何にも縛られないのが良いんだし好きにしたらいいよ
998: (ワッチョイ d95d-kYJB) 2023/10/30(月)23:34 ID:2SouKz/I0(3/3) AAS
構文的にはC#っぽく
using (double* p = malloc(...); free(p)) {
p を使う
}
でも良いかも知れない
これだと1ループのforに似ててCに良く馴染むな
もちろんreturnとかexitで脱出してもfreeは呼ばれる
999: (ワントンキン MM53-wL8D) 2023/10/31(火)10:19 ID:i2gAy2CGM(1/2) AAS
そんなもんが規格に入るわけないんだから無駄話だろ
1000: (ワントンキン MM53-wL8D) 2023/10/31(火)10:19 ID:i2gAy2CGM(2/2) AAS
うめ
1001
(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 192日 20時間 14分 5秒
1002
(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
省4
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.194s*