[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/24 02:15 / Filesize : 263 KB / Number-of Response : 1018
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 159



1 名前:デフォルトの名無しさん mailto:sage [2022/08/04(木) 23:32:27.83 ID:yWVViPyIM.net]
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

C17
www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

C11
www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C2x ドラフト
www.open-std.org/jtc1/sc22/wg14/www/docs/n2731.pdf

C99
www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 158
https://mevius.5ch.net/test/read.cgi/tech/1640401906/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

593 名前:デフォルトの名無しさん mailto:sage [2022/10/09(日) 16:56:05.30 ID:Rj5ElR5Pd.net]
30行計画

594 名前:デフォルトの名無しさん mailto:sage [2022/10/09(日) 17:07:00.15 ID:Rj5ElR5Pd.net]
FDDのオーバートラック
286のHMA
CRTCをプログラムでハード破壊
なんか、こういうの色々あったな

595 名前:デフォルトの名無しさん mailto:sage [2022/10/09(日) 20:59:59.12 ID:x4NHwN4o0.net]
C言語ってパソコンの内部まで理解してないとムズイ?
メモリがどうとかクロック数が幾つとか

596 名前:デフォルトの名無しさん mailto:sage [2022/10/09(日) 21:14:06.38 ID:pElHhn0J0.net]
>>585
> メモリがどうとかクロック数が幾つとか
そんなものは知らなくても組めるけどそもそもC言語使う必要あるのか?

597 名前:はちみつ餃子 mailto:sage [2022/10/10(月) 00:47:38.73 ID:95zl+JNn0.net]
>>585
C の言語仕様は言語仕様上で規定する仮想的な機械の挙動として記述されていて
現実の処理系がどのような機械語を生成するのかは規定してない。
見かけ上の挙動が仕様通りならどういう機械語が生成されてもよいことになってる。
現代的な処理系はすごく高度な最適化をするのでどういう機械語が生成されるのか事前に想像するのは難しいし。

どうしてもすごく高速に動いてほしいプログラムを気合い入れてチューニングしたりする場合には
ハードウェアの知識が必要になることも有るし、
他の言語との接続が必要なときにはメモリの管理方法を協調させないとおかしなことになったりもするけど
結局のところやりたいこと次第だし、入門レベルでは気にする必要はない。

今ならアプリケーションレイヤで動くプログラムでクロックを意識するようなことはまずない。
現代のパソコンやスマホくらいの高級な CPU では機械語を分解して
最適化した内部命令 (インテルだと μop と呼んでいるようだがメーカーによって名称はいろいろ) を生成したりする
工程があるので、クロックも一定とは限らない。
そこまで高度なことをしない CPU でもだいぶん前からパイプラインは採用されてるから、
単純に命令ごとのクロック数を合算した値が処理時間になったりはしないし。

598 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 01:08:56.92 ID:dL9jKsv+0.net]
i++; 辺りは効率の良い機械語翻訳を期待していると思う

599 名前:はちみつ餃子 mailto:sage [2022/10/10(月) 01:16:27.83 ID:95zl+JNn0.net]
言語仕様で規定する仮想的な機械が (C が初期に使われ始めたコンピュータである) PDP と親和性が良すぎるので C のことを PDP エミュレータと揶揄することもあるらしいね。

600 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 06:33:30.58 ID:ICu0RgND0.net]
>>585
何のプログラムを作るかによる
おまえさんが言うようにハードがわかる必要があったり
簿記や不動産取引がわかる必要があったり

601 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 08:21:20.44 ID:C38R1GQo0.net]
おそらくそこまで高度なことは求めてないよ
クロックという言葉を知ってたから口走ってしまっただけで意図としてはハードウェアの知識をつけないとC言語は使えないのかと聞きたかっただけだと思う



602 名前:デフォルトの名無しさん (ワッチョイ 8a7c-O9y3) mailto:sage [[ここ壊れてます] .net]
C言語関連のシステム系の質問していいですか?
微妙にスレチっぽいですが、このスレの人が一番詳しそうなのでご容赦ください。

最近Windows Server 2019マシンを導入し、Windows10で使っていたソフト(他社製)を持ってきたところ
ほぼ全部問題なく動くのですが、一つだけ10倍以上遅いソフトがありました。
そのソフトはexe1個のみの構成で、Dependency Walkerで調べると C:\Windows\System32\msvcrt.dll に依存していました。
(他の正常動作するソフトでmsvcrt.dllに依存するものはなし)
Cにはあまり詳しくないのですが、昔mallocが異様に遅い環境で苦しんだことを思い出し
もしかしてWindows Server 2019のmsvcrt.dllの出来が悪いor相性問題が原因なのではと思いました。

そこで考えたのですが、Windows10のmsvcrt.dllを持ってきて使ってみるというのはどうでしょうか?
とりあえず速度が正常に戻ってくれれば十分なのですが、やめたほうがいいでしょうか?

603 名前:デフォルトの名無しさん (アウアウウー Sa2f-tmeX) mailto:sage [[ここ壊れてます] .net]
やめた方がいい
絶対他に原因あるわ

604 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 11:44:15.39 ID:5N3s1AfQ0.net]
>>593
やっぱりそうですかね・・・
リソースモニターとかで調べてはみたものの原因がさっぱり分かりません。
特にIOが遅いように感じるんですが、ハイグレードなSSDを積んでいるのでハードとしては問題ないと思います。
100万円クラスのマシンですし他のハードもスペック的には問題ないはずです。

ちなみに試しにWindows10のmsvcrt.dllをexeと同じフォルダに置いてみたのですが、どうも使われていなさそう。
dll検索順ってカレントディレクトリが最優先じゃなかったでしたっけ?
できるか知りませんが、System32のdllをspecificに参照するようになっていたらそもそも無理ですね。

開発元に聞けたらいいのだけど諸事情でそれが不可能です。

605 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 13:06:26.88 ID:+EPzVvoud.net]
微妙じゃなくて完全にスレチw
Windowsシステム関連のスレで聞いたほうがいいと思う

606 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cb3e-kHT+) mailto:sage [[ここ壊れてます] .net]
>>594
> dll検索順ってカレントディレクトリが最優先

もし単純にそういう順序を適用するとマルウェアがファイルをそこに置くだけでプロセスを乗っ取れてしまう。
レジストリのどこかに登録されているやつは別扱いにするとかのややこしいルールがあったはず。

> 特に IO が遅いように感じる

IO が遅いというのが事実だとしたら
 ① 物理的に乗っているのが SSD でもハードウェアの自動認識が誤っていて古いインターフェイスでやり取りしている
 ② たまたまそのアプリケーションがデバイスドライバかコントローラのバグを踏むような制御になっている
 ② HDD で性能が出るようにアプリケーション内で凝った制御をしていたが SSD が速すぎて狂った
などの事情は思いつくけど……

607 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 14:32:16.59 ID:5N3s1AfQ0.net]
>>595
Windowsシステム関連のスレがないか探しましたが、どうもこれというのがないんですよね。
Windows板かな?あそこは一般コンシューマが多くてこの手の質問はしにくいのが・・・。
引き続き海外フォーラムを漁ってみます。

>>596
詳しくありがとうございます。
ご提示のものが原因とすると、ちょっと自分の手に余りそうです。

他の似たようなソフトは軒並み問題ないのに何でこのソフトだけ・・・と釈然としませんが
どのWindowsでも同じように動きますなんてそう甘い話はないということかな。

608 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 14:37:10.94 ID:1bdf6+Ty0.net]
存在しないネットワークドライブにアクセスしに行って、タイムアウトするまで固まるとかは時々遭遇するけどはたして

609 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 14:51:34.42 ID:YCEUCnMua.net]
ていうか作者に障害報告しろや

610 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 14:56:11.84 ID:mfO2JKX70.net]
ライセンス料を払いたくないやつかな?

611 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 14:58:25.83 ID:2QXR7TRNd.net]
鯖機だとベンダー独自の機器やドライバが入ってたりするだろうから分かる奴はほぼいないだろうな



612 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 15:00:55.06 ID:dL9jKsv+0.net]
>>597
>一つだけ10倍以上遅いソフト

この製造元に聞くのが最短だと思う

613 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 18:15:26.96 ID:5N3s1AfQ0.net]
製造元には軽く聞いてみたのですがサポート対象外ですと一蹴されました。
諸事情により相手のほうが立場が上で、現段階でこれ以上聞き出すのは難しいのですが
上手く機会を作って情報を得たいと思います。
皆さんありがとうございました。

614 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 07:55:01.73 ID:1DnVcsvQd.net]
やはりな

615 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 08:00:48.49 ID:+IdMirEn0.net]
Windows Server で Hyper-V 動かしてその上に Windows 10 入れてそのアプリ動かせばええやん

616 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 09:05:08.75 ID:1DnVcsvQd.net]
ハイパーバイザー型よりホスト型の方が融通効くしフリーのもある

617 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 09:19:51.89 ID:lDI8MaGS0.net]
個人利用なら好きにすればいいけど共用のサーバー機でそんなことして問題起きると責任問題になるよ

618 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 09:26:18.23 ID:+IdMirEn0.net]
>>606
Hyper-V は両方あるからわざわざ 「Windows Server で」って書いてある


>>607
普通はシステムのdll置き換えようとしてる時点で責任問題になるしそもそも Windows 10からアプリ持ってきてる時点でライセンス大丈夫か?って思うだろ

619 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 09:44:54.24 ID:S5uegLjFa.net]
msvcrtってMicroSoft Visual C/c++ RunTimeなんだよね
C言語ってライブラリを静的リンクすることが多いけど共通部分をdllにしたらディスク容量が少なくて済むんじゃねって発想で作られた過去の遺物
今は積極的に使うべきものじゃない
おそらく古い古いソフトなんじゃね

620 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 09:48:41.00 ID:S5uegLjFa.net]
そういう古いソフトは当然のように32ビット(ひどい時には16ビット)だから64ビット環境ではエミュレーションが働く
その辺に何かありそうな気がするな知らんけど
コンパイルし直せば直るような気がしないでもないがメーカーが対応する気ないんじゃどうしようもない

621 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 14:18:13.05 ID:UUE3JARA0.net]
>>585
メモリとハードディスクの違いくらいはわかってないと無理でしょ



622 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 14:24:20.66 ID:e/MLj7zo0.net]
Z80 は楽だったなあ

623 名前:ハノン108 mailto:sage [2022/10/11(火) 18:29:10.92 ID:RNyxjBqNH.net]
>>610
16ビットはエミュレーションは利きません!

624 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 18:50:36.59 ID:D4ywmAPt0.net]
>>613
なんで?
https://learn.microsoft.com/ja-jp/sql/odbc/microsoft/using-16-bit-applications-with-32-bit-drivers?view=sql-server-ver16

625 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 19:07:33.88 ID:M2HX+v9qM.net]
64bit Windowsでは16bitアプリは動かせない(エミュレーション環境は32bitだけ)
32bit版Win10 ならかろうじて可能性はあるがWinServer2019は64bitだけなので完全に無理

626 名前:ハノン mailto:sage [2022/10/11(火) 19:10:36.62 ID:RNyxjBqNH.net]
>>614
それは 32 ビット版 Windows の話
64 ビット版 Windows は 16ビットアプリを捨てました、AMD64 アーキをもっと勉強してね!

627 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 19:31:53.97 ID:D4ywmAPt0.net]
>>616
サードパーティだがWineVDMというのを使えば動くようだ
勉強になったか?

628 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 19:49:30.50 ID:e/MLj7zo0.net]
32ビット版の仮想を動かしてその中で16ビットアプリを動かす事は出来る
そういう多段ロケット使えば良いんだがそこまでして今動かすものがないw

629 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 20:01:38.90 ID:1DnVcsvQd.net]
>>616
64bitホストに32bitゲスト載せるとさ
普通に16bitアプリを実行できるんだけど
本当にハード的に不可能なんかね?

630 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 20:05:48.94 ID:1DnVcsvQd.net]
32bit OSでは4GB超えできないとかさ
マイクソの集団催眠にかかったやつの言う
ちったあ勉強しろってマウントは
呆れるの通り越して笑う価値もない

631 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 20:10:22.58 ID:D4ywmAPt0.net]
エミュレータ使うならできない理由はないなあ
単にマイクロソフトが自前のエミュレータの提供をやめたというだけでAMD64がどうとか言うのは知識不足のマウンターの妄言としか思えないな



632 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 20:51:12.11 ID:X1iGovPsM.net]
32ビットすら打ち切りたそうなのに?

633 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 22:06:01.71 ID:aJhELtxJ0.net]
じゃあまずお好きな言語でエミュレータを作ってそこで動くZ80プログラムを作れ。

634 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 22:06:38.42 ID:aJhELtxJ0.net]
リロード忘れた。間に山盛りに他の書き込みが。
削除できないからもういいや。わすれてくれ。

635 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 22:31:48.32 ID:aIs/ZXKV0.net]
XP mode はエミュレータか? おいサル

636 名前:ハノン mailto:sage [2022/10/11(火) 22:36:50.66 ID:d6pThQK8H.net]
>>617,619
それってエミュレータでしょ?仮想的なCPUをコードでガリガリ書いてインタプリタしているって奴、そんなのでもまともに動く時代になったんですねえ

>>618,619
私も 16 ビットを 64 ビットで動かすときはエミュっています
http://takeda-toshiya.my.coocan.jp が有名で私も便利に使っています []
[ここ壊れてます]

638 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 22:46:46.46 ID:D4ywmAPt0.net]
>>626
AMD64の勉強したらこの話に関係ないことがわかったか?

639 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 23:02:05.82 ID:d6pThQK8H.net]
まあ私も「エミュレーション」という言葉を、ソフトウェアによるエミュレーションか、80386 がやり始めた仮想86モードという意味でのエミュレーションかをはっきり区別せずにパンパン書いたせいもありますね、ごめんなさいね

640 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 23:04:40.15 ID:D4ywmAPt0.net]
WOW64とサンクはその話とはまた別だぞ
それはハードの話だろ
MSが提供しなくなったのはサンクだ

641 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 23:21:05.30 ID:aJhELtxJ0.net]
thanks



642 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 01:05:29.68 ID:P/bHT4Cpr.net]
サークルKサンクス潰れたから提供のしようがない

643 名前:デフォルトの名無しさん mailto:sage [2022/10/15(土) 18:58:46.26 ID:fQccGg0Vd.net]
なぜつまらないとわかっていてオヤジギャグを何故言ってしまうのか
チコちゃんで脳科学的に分析してて笑ったわw

644 名前:デフォルトの名無しさん mailto:sage [2022/10/15(土) 19:44:27.23 ID:jaz9tT2QH.net]
>>632
なんでなんで!

645 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 03:24:32.42 ID:y3K9DSVg0.net]
ジジイだからだよ。

646 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 11:13:15.74 ID:SiOwIn850.net]
ここはジジイしかいないからな

647 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 19:25:01.75 ID:aXExphHPd.net]
>>633
歳を取ると語彙が増えていき頭の中でダジャレが浮かびやすくなる
それと同時にセンスが低下して面白いギャグかどうかがだんだんわからなくなる
結果的におっさんはつまらないダジャレを思いついたらすぐ言うようになる

648 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 19:54:53.72 ID:UUAxnkpP0.net]
オヤジギャグやダジャレより
連想したものをただ言ってれば、
例えツッコミ扱いしてくれて楽だろう

649 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 19:58:46.29 ID:4Jg9TvVE0.net]
つまらなくても笑えよ。敬老精神が欠如しているのか。

650 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 20:00:11.34 ID:SiOwIn850.net]
ソースにもだじゃれ入れてそう

651 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 20:25:40.72 ID:w47Nq7BKH.net]
>>639
char aznable



652 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 22:06:49.25 ID:SiOwIn850.net]
カウント変数にcuntは止めろとねんを押された

653 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 22:28:20.65 ID:NFETJM8p0.net]
コーディング規約があるなら守りましょう

654 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 22:29:14.08 ID:NFETJM8p0.net]
一瞬idがNEETかと思ったが違ったw

655 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 22:48:13.58 ID:SiOwIn850.net]
ソースではなく、make終了時にBIGCOCKと表示させてた奴を知ってる
本人いたら、ゴメンナサイ、バラしました

656 名前:デフォルトの名無しさん mailto:sage [2022/10/21(金) 21:25:54.17 ID:CZbur0iYd.net]
そう、こういうの
全然どうでもいい事をさも重要な秘密のようにw

657 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 07:10:33.74 ID:9/1OGIJE0.net]
独り言です
インデントは4を使ってきたのだがプロの世界?では2みたいだな
軽くショックを受けた

658 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 07:12:57.69 ID:9/1OGIJE0.net]
ちなみにインデント2を使ってるのはcatコマンドのソースです
https://sources.debian.org/src/coreutils/9.1-1/src/cat.c/

659 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 07:27:37.61 ID:i1fpLCEI0.net]
プロの現場にそういうところもあるというだけだよ
1つ目撃したからってそれが全てだと思うのは
早まった一般化という誤謬だ

誤謬を多発するやつは論理思考が苦手ってことだ
むろんプログラマとしての適性ではマイナス要素だ

660 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 07:32:06.64 ID:A1wSH6ms0.net]
昔は画面が狭かったからそういう主義のやつも割といた
そろそろ淘汰されてる頃じゃね

661 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 07:39:15.76 ID:i1fpLCEI0.net]
一画面ルールってのもあったな



662 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 08:27:39.75 ID:HgiMaBnhM.net]
今でもそこそこ使われてるだろ
一画面とは言わないまでも100行ルールとかの発展型も多い
ひとつの関数が何千行もあればコードレビューで問題にされる

663 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 08:40:19.94 ID:i1fpLCEI0.net]
ダラダラ書くなって話が廃れたとは言ってないんだが

664 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 09:25:59.68 ID:+gGQ3BRS0.net]
GNUスタイルのインデントはゴミ

665 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 09:26:11.73 ID:KYgyTmU4M.net]
名前空間やクラスを使わないC言語は特に文が長くなりがちだから、2のほうが使い勝手がいいと思うことはよくある

666 名前:デフォルトの名無しさん (ワッチョイ 1363-HLP5) mailto:sage [2022/10/30(日) 10:52:42.74 ID:vrlOFY0H0.net]
>>647のcatソース見たけれど、
私にはブロックが分かりにくいと感じた
見慣れれば良いのかも知れないが

667 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 17:05:35.10 ID:wnFbyiurd.net]
>>647
rms仙人の直筆か
プロ?と言って良いのかはさておきスーパーハッカーではあるね

関数呼び出しの()前の空白とかは結構独特なスタイルだと思うぞ

668 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 17:11:32.88 ID:c3va8FLBd.net]
✗直筆
✓監修

プロとは我らIT土方の事を指すのです

669 名前:おじ乳輪様 [2022/10/30(日) 17:12:30.77 .net]
中括弧の位置とか関数呼び出しのスペースとかなんでこんな独特なスタイルなの?
なんのメリットが?

670 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 17:24:51.13 ID:xXAnW4UR0.net]
もともとは egrep とかで使いやすい
とかいう理由だった気がする

671 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 17:30:55.10 ID:1Zssd/uh0.net]
web.sfc.wide.ad.jp/~sagawa/gnujdoc/standards-19981118/standards-ja_5.html



672 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 17:33:33.15 ID:ZM6oqeKp0.net]
GNUのソースは読もうと思って読んだがあのスタイルに拒否反応が出て駄目だったわ

673 名前:デフォルトの名無しさん [2022/10/30(日) 23:05:10.18 ID:KHak5nKt0.net]
( ´_ゝ`)フーン

674 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 23:45:46.77 ID:QW7VZG88M.net]
インデントごときで読む気が無くなるのは、単に向いてないだけだなw

675 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 23:52:22.08 ID:vrlOFY0H0.net]
うん、むいてないからお前がやってくれ

676 名前:デフォルトの名無しさん [2022/10/31(月) 00:03:46.32 ID:EzTz1A6M0.net]
 (
   ´_ゝ`
 )
フーン

677 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 00:23:37.56 ID:8d/Em0+h0.net]
スタイルがあるなら従うべきだけど、300-500行目に連発する
}
else
{
はさすがに目が滑る
スクロールして追うのも辛い

678 名前:デフォルトの名無しさん [2022/10/31(月) 00:32:37.86 ID:MKojko7I0.net]
ブロックの前にインデントを入れてるのはブロックも文なんだから単一文の時と同じようにインデントを入れるべきという理屈かな?

679 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 01:42:04.37 ID:8d/Em0+h0.net]
>>667
それ自体は一貫してるからいい、ただしこの場合は対応するifから平気で50行以上も離れているので、elseだけじゃスクロールバックしないと条件が何か分からん

エディタのfold機能を活用するのもアリだけど、プレーンテキストとして読めるべきという姿勢のようだから、まさに>>660にある
#ifdef foo
...(長いコード)
#else /* not foo */
のようにelseにコメントを添えさえすれば、俺的にはオッケー

余談だけど
個人的にはプリプロセッサの条件も自由にインデントしてる
# ifdef foo
...
# ifdef bar
....
のように
殆ど見かけないから決して他人には勧めはしないけど

680 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 01:43:55.98 ID:oYB2uzRMM.net]
GNUのインデントは、Pythonを考慮すると利にかなってんだよな
if foo:
bar

if (foo)
{
bar;
}
という対応がある
Pythonはインデント自体にブロック要素があるから余計なカッコが要らないけど、Cはブロック要素にカッコが必要だから書いてあると考えれば、実はPythonと一緒なんだよ
これに気付いた時はrmsは天才なんだと思い知らされた

681 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 02:16:22.63 ID:8d/Em0+h0.net]
>>669
結果的に同じ形に落ち着いてるけど、pythonとは正反対の思想から生じている事もお忘れなきよう
尊師の第一言語はcでなく言語に構文要素自体が存在しないlispだから、改行のみからコードブロックとインデントレベルがフォーマッタを問わず一意に定められる

c系統(いわゆるブレース言語)は言語に構文を採用しつつ、フリーフォーム記述の許す折衷だから、フォーマッタとスタイルにバリエーションが生じる



682 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 02:24:22.85 ID:8d/Em0+h0.net]
翻って、エディタ入力支援/フォーマッタプログラム無しにlispを記述するのは事実上不可能に近いので賛美してるわけではないよ
念の為

683 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 11:19:45.88 ID:0hSBCDEtd.net]
))))))))くらいは序の口だし、括弧を数えてたら気が狂うわな
ネストレベルに応じて機械的に挿入されるインデントのみによって構造を把握するから、Lispは実質的にPython並にインデント強制

684 名前:はちみつ餃子 mailto:sage [2022/10/31(月) 11:43:48.99 ID:HpV/6ZOj0.net]
今となっては C だってエディタの支援なしに書く気にはならんけどな。

685 名前:デフォルトの名無しさん [2022/10/31(月) 13:07:16.76 ID:J5/naAYk0.net]
>>673
それは慣れの問題

686 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 15:59:12.44 ID:YDjtl0u50.net]
そう言うのには慣れたくない

687 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 16:35:29.26 ID:gpqFhr3z0.net]
LISP は先にあるんだし、Python の文法は諸々の言語の影響結果だろ
ブロックの開閉で改行するってのは、ALGOL系のBEGIN~ENDの強い影響を感じる
Cではむしろ、少し自由な書式書法になっていたのが退化した

688 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 16:49:19.46 ID:YDjtl0u50.net]
Cが退化したのではなく、人間が退化したんだろう

689 名前:デフォルトの名無しさん [2022/10/31(月) 20:11:09.56 ID:a6AXXlaBa.net]
括弧の入れ子がひどいコードを作ることがやばい

690 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 21:12:31.27 ID:YDjtl0u50.net]
初心者のために、本来不要だけど括弧を付けるときはあった

691 名前:デフォルトの名無しさん [2022/10/31(月) 21:55:34.36 ID:MKojko7I0.net]
ウザ



692 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 22:06:42.50 ID:gNe27yrb0.net]
>>679
俺は未来の自分のために言語仕様としては不要な括弧を付ける

693 名前:デフォルトの名無しさん mailto:sage [2022/11/01(火) 07:24:39.67 ID:8mAHYLmxd.net]
初心者でも務まる仕事か

694 名前:デフォルトの名無しさん mailto:sage [2022/11/01(火) 15:13:43.68 ID:hGXBrabD0.net]
若手に優しい配慮は必要だと思う
いらないと言うことに気がつけば
それはそいつの進歩だ

695 名前:デフォルトの名無しさん mailto:sage [2022/11/01(火) 18:32:43.22 ID:8mAHYLmxd.net]
甘やかしでしかない

696 名前:デフォルトの名無しさん mailto:sage [2022/11/01(火) 18:40:22.15 ID:hGXBrabD0.net]
たった1人で好きなシステム組んでみて

697 名前:デフォルトの名無しさん mailto:sage [2022/11/01(火) 18:45:14.28 ID:8mAHYLmxd.net]
議論になってない

698 名前:デフォルトの名無しさん mailto:sage [2022/11/01(火) 20:23:05.05 ID:Lnx9eR9fM.net]
議論なんかしてないだろう

699 名前:デフォルトの名無しさん mailto:sage [2022/11/01(火) 21:17:55.24 ID:hxzN6YDm0.net]
ということにしたいのですね

700 名前:デフォルトの名無しさん mailto:sage [2022/11/01(火) 22:30:37.78 ID:hGXBrabD0.net]
オッサンは呼んでない

701 名前:デフォルトの名無しさん [2022/11/02(水) 11:37:22.22 ID:1ThO0l2A0.net]
はつみみです



702 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 21:00:24.72 ID:C3BaP9Oq0.net]
焼き鳥の通だけが知ってる稀少部位?

703 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 17:58:10.87 ID:BvZ6DXqw0.net]
>>658
呼び出し前スペースはプリプロセスをm4で強化するときに少し面倒になるな
GNUはm4大好きなのにな

704 名前:デフォルトの名無しさん mailto:sage [2022/11/20(日) 17:25:16.95 ID:u5cvtrdO0.net]
m4すらすら書ける人います?

705 名前:デフォルトの名無しさん mailto:sage [2022/11/21(月) 03:19:48.32 ID:Amw5zf2Y0.net]
大昔、sendmail.cf を生成するのによく使われてな。久しぶりに名前を聞いた。
autoconf をがんがん使うプログラマがいればワンチャン。

706 名前:デフォルトの名無しさん [2022/11/23(水) 15:53:36.98 ID:U6TEG1mTa.net]
sendmail.cf なつかしす
postfix に乗り換えちゃった

707 名前:デフォルトの名無しさん mailto:sage [2022/11/23(水) 19:55:29.66 ID:aRKGS4gV0.net]
CF使った事あるw

708 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 12:32:01.04 ID:FzNlCQf10.net]
すまん、聞くことないわ

709 名前:デフォルトの名無しさん mailto:sage [2022/11/25(金) 12:49:25.94 ID:PV2ZG9bua.net]
CF は m4 ではないやろ?

710 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 15:02:39.09 ID:ZPuEPm3M0.net]
ttps://atcoder.jp/contests/abc273/submissions/35667282
このコードを実行するとscanfで入力を待つはずなのですが即座に終了してしまいます
たまにそういうコードを見かけるのですが何が原因なのでしょうか
printfを入れても実行されないのでmainがスキップしているような。。

711 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 15:40:10.03 ID:q8NQ5dwmd.net]
あなたの環境のせいかと



712 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 16:09:51.97 ID:JXDLC/Oi0.net]
コードが酷くてワロタw

713 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 16:26:50.49 ID:jAeBwf3w0.net]
>>699
典型的な scanf() あるあるだな
最初の scanf() で数字 + 改行が読み込まれるが"¥d"だと数字だけ取り出して改行が残っちゃう
2回目以降のscanf()は改行が残っているから入力をスキップしてしまう
scanf 改行 読み込み とかでぐぐると色々出てくる
https://hiroyukichishiro.com/scanf-problems-in-c-language/
回避方法はいくつかあるけど、個人的には
static b[100];
fgets(b, sizeof b, stdin);
N = atoi(b);
...
fgets(b, sizeof b, stdin);
d[i].key = atoi(b);
みたいにするかな

>>700
釣りか?

714 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 16:29:17.59 ID:LIu803lba.net]
普通のマージソートを読んでるだけで別に酷くなくね?
エラーハンドリングしてないってことなら競プロではそれが常識だぞ
何を見て酷いと言ってるのか説明してくれ

715 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 16:33:06.65 ID:LIu803lba.net]
>>702
\dじゃなく%dのことかな?
そのコードの下にACが30個並んでるだろ?
これは用意された30通りのテストケースにおいて想定通りに動いたということなんだよね
つまりコードのせいではないよ

716 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 16:36:36.47 ID:q8NQ5dwmd.net]
改行が問題になるのは%cのときくらいで
%dのあと%dだから空白類文字は問題ないよ

717 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 16:42:55.52 ID:LIu803lba.net]
>>701
ちなみにこのコードを書いたのはオレンジコーダー
https://atcoder.jp/users/ygussany?contestType=algo

オレンジというのは一部上場企業でも一人もいないことが珍しくないレベルの高レベルプログラマを超える化け物レベルの超高レベルプログラマを超える頭おかしいレベルのプログラマ

718 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 16:47:51.25 ID:knNtAgEU0.net]
y[200001];とd[200001]がスタック壊してしまいます涙

719 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 16:54:14.03 ID:LIu803lba.net]
>>707
Linuxではメモリの許す限りスタックが使えるから

720 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 16:54:27.16 ID:ZPuEPm3M0.net]
>>707
ありがとうございます
それでした

721 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 17:04:51.34 ID:IEkrCGic0.net]
おま環定期



722 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 21:55:28.56 ID:7byHd/K/d.net]
>>708
とはいえmallocにしたほうがいいんでない?

723 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:07:50.79 ID:RAGda7mP0.net]
VLAで足りることにmallocか

724 名前:デフォルトの名無しさん (US 0H31-fHn/) mailto:sage [2022/12/04(日) 22:16:11.60 ID:Yt2fANdLH.net]
>>712
C++ で見捨てられた VLA なんか使いたくないですね

725 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:29:52.59 ID:xXGWnQN3d.net]
>>712
VLAはC99で採用されたけどC11でオプション仕様に格下げされたよ

726 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 22:31:57.30 ID:JQ3spjvfM.net]
>>708
それってどこ情報なん?

727 名前:デフォルトの名無しさん [2022/12/04(日) 23:03:10.81 ID:UdvGlPZ+0.net]
Cで通信系いじりたいんやけどなにからすればええ?
まずはゲームとか作ってC言語に慣れた方がええんやろか
「無線 C言語」と調べてもコロナ社の本しか出てこん
本買った方がええんか?
右も左もわからん、どなたか教えてください!!!

728 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 23:04:19.10 ID:AOlAqVGT0.net]
まず何がやりたいのかはっきりさせろ
何もわからんぞ

729 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 23:09:42.46 ID:HgjSOVEG0.net]
通信系って、無線通信?
C言語には電波を飛ばす機能はないよ

730 名前:デフォルトの名無しさん [2022/12/04(日) 23:14:41.99 ID:UdvGlPZ+0.net]
ネット通信とか無線通信はC言語だとどっかで耳にしたからとりあえずやりたくなったんや
なんかいい通信系の入門サイトとかあれば教えてほしい

731 名前:デフォルトの名無しさん [2022/12/04(日) 23:17:10.93 ID:UdvGlPZ+0.net]
>>718
無線通信系に興味ある
電波飛ばす機械をC言語でなんかするんじゃないん?



732 名前:デフォルトの名無しさん [2022/12/04(日) 23:26:26.75 ID:MiJYA0Kr0.net]
通信をする方法が無線かどうかはハードウェアの問題。
更にOSやデバイスドライバやOSのシステムコールをどのように呼べば良いかを知る必要がある。
C言語の知識が必要になるとすると通常はここからだ。

そうではなくてハードウェアはあるがOSがなくI/Oポートを直接読み書きするようなプログラムを
作る必要がある場合はアセンブラかC言語で作ることになると思う(必ずしもそうである必要は
ないが)。その場合はOSのデバイスドライバを自作するような感じになる。

733 名前:デフォルトの名無しさん mailto:sage [2022/12/04(日) 23:27:41.55 ID:HgjSOVEG0.net]
有線にしろ無線にしろ、通信という以上は相手があって
その相手とルールの取り決めをしてからそのルールにしたがってやり取りする
だから最初に、誰と、どういう取り決めでデータのやり取りをするかを決めないといけない
インターネットもそういうルールをみんなで決めてやり取りをしている
とりあえずインターネットの通信を学んでみたらどうだろう
この掲示板に書き込みをしているのだから、その通信が可能だし、
その機種を使って試すところから始めると良い

734 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 00:30:23.98 ID:ddGzHpStd.net]
>>712
スタックの仕様は機種依存が激しいから可搬性を考えたらスタックは無限にあると考えないほうがいい
というかLinuxではデフォルト8MBみたいだけど

735 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 00:47:01.63 ID:ddGzHpStd.net]
というかスタックというのは一番効率の悪いメモリの使い方なので
本を片っ端から積み上げて下の方は取れなくなってしまうイメージ
大規模な配列はスタックに置かないほうがいいというのは基本では
断片化があるとはいえmallocのほうが効率的

736 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 00:55:05.00 ID:d/jwcHzh0.net]
一番上と、一番下でアクセスの速度は同じでしょう

737 名前:デフォルトの名無しさん [2022/12/05(月) 01:09:57.27 ID:rpvKYALB0.net]
スタックが上のデータに埋もれて下のデータが取り出しにくくなるなら、ヒープでも全く同じことが発生するはず。
適当なアナロジーで間違った理解をしている典型例だと思う。

738 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 01:14:21.69 ID:ZI2+JeHur.net]
デカいデータで最適化が効くことがあるのはグローバル変数

739 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 01:15:32.38 ID:m5vf/Aut0.net]
Cのローカル変数は、マシン語レベルではスタック領域に生成されるが
相対アドレシングで自由にアクセスするので問題ない

740 名前:デフォルトの名無しさん [2022/12/05(月) 01:21:11.87 ID:op7KwCv70.net]
領域の確保開放が上からしか出来ないだけで読み書きはどこでもできるもんな

741 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 06:17:33.64 ID:0xhTnbB50.net]
>>723
え、無限にあると考えることがあるの?
・・・あれか、マイクソソフトが吹聴してる例の有害なやつか



742 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 08:28:01.18 ID:d0zhDPVSa.net]
>>711
競プロだぞ

743 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 08:42:20.41 ID:AHxKL62Z0.net]
有限さん「おい、スタックが無限にあると考えられるとはどういうことだ?証明して見せろ!!」
ムゲンさん「わかりました。では無限なメモリを積んだコンピュータを用意してきてください。そしたら証明して見せます。」
有限さん「そんなことできるわけないだろ!」
ムゲンさん「ザンネン。じゃああなたのご希望に沿うことはできないですね。」

ボク「それってつまり、無限のスタックは存在しないってことなんじゃ?」

ムゲンさん「『無限なメモリを積んだコンピュータは存在しない』というのは悪魔の証明であって、存在しないと断言すること自体が不可能です。」

ボク「屏風の虎…一休さんかよ」

744 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 09:23:30.88 ID:0xhTnbB50.net]
観測可能な宇宙に原子が8e79個あり、
DDR4のセル電荷が2.4e-14クーロンとすると
メモリは6.7e73バイトまでしか作れない
∴ 無限のメモリは存在しない

745 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 09:27:43.41 ID:AHxKL62Z0.net]
観測不可能な宇宙領域がまだあるではないか
そこには無限の(ry

746 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 09:44:59.30 ID:BaBCvHVhM.net]
量子メモリであれば無限の状態を記憶できるか?

747 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 10:56:43.18 ID:ddGzHpStd.net]
>>725
速度の問題ではなく
用済みになっても開放できずにいつまでも抱え込んでいなければならないことが問題

748 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 11:14:13.11 ID:d/jwcHzh0.net]
スタック上の変数って、その関数内でしか用は無いのだから
関数が終了と同時二メモリーから消え去ります
抱え込むことはありません

749 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 11:22:51.84 ID:hYIKK9DOp.net]
児童変数の事?

750 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 11:23:28.04 ID:E9Ntil7Ed.net]
効率悪い実装してれば効率悪くなるだけの話やな
スタックは一時変数の効率的確保の極みなんだけど関数化を怠った結果そうなる

751 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 11:24:48.36 ID:hYIKK9DOp.net]
児童変数を関数の戻り値にするのは実体渡しだけにしておかないと痛い目に逢ったなぁ



752 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 11:28:42.22 ID:d/jwcHzh0.net]
>用済みになっても

と言うことだから、関数間の受け渡しは考慮しなくて良いでしょう

753 名前:デフォルトの名無しさん (ワッチョイ e2ad-4FAg) [2022/12/05(月) 18:42:27.81 ID:M2dfOAYW0.net]
自動変数用のスタックは本物のスタックポインタ無視して別に作っちゃってもできるな。
そういうコードを吐くコンパイラも作れるというだけのことではるが。
でもその方がリターンアドレスが詰まれている所に変数混ぜるより安全な感じはする。
特にC言語の場合は配列の範囲をオーバーしても平気でどんどん書き換えちゃって関数の終わりで明後日の方向にリターンなんてものも作れちゃうから。

754 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 18:46:56.29 ID:d/jwcHzh0.net]
ワープ航法w

755 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 19:26:38.80 ID:3chMJcRmp.net]
8ビット時代にゃスタックジャンプは普通にやってたなぁ

756 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 19:33:53.84 ID:XYzlQpP/M.net]
スタック保護
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/c905.html

757 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 20:04:47.35 ID:9YGPhFSH0.net]
>>742
> 自動変数用のスタックは本物のスタックポインタ無視して別に作っちゃってもできるな。
当たり前だろ、その本物とやらのスタックポインタもたないマシン(例えば汎用機)もあるんだし

> でもその方がリターンアドレスが詰まれている所に変数混ぜるより安全な感じはする。
暴走するか変なデータになるかの違いしかない
どっちがマシかは状況による

758 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 20:08:14.24 ID:AHxKL62Z0.net]
いや暴走のがマシなんて状況あるん?
変なデータは使用する時点でチェックすれば防げるけど

759 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 21:05:25.92 ID:9YGPhFSH0.net]
>>747
> いや暴走のがマシなんて状況あるん?
今時のプロセッサーなら暴走したら不当命令とか>>745のリンク先にあるデータ実行防止で止まる可能性が高い

> 変なデータは使用する時点でチェックすれば防げるけど
それが完全なら良いけど例えば金額が多少間違っててもチェックできないケースもあるだろ

760 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 22:17:34.11 ID:d/jwcHzh0.net]
補助輪つき自転車みたいだ

761 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 00:15:19.77 ID:XVvWtcz/d.net]
>>737
抱えたまま他の関数を呼び出したり
あと再帰呼び出しとかスタックを利用する一番の利点とされてるけど?
問題なのは呼び出された関数がすでにスタックが残り少ないのを知る手段がなく
そこでクラッシュしても原因がわかりにくいという開発上のトラップだな
まあ大規模なソフト開発してみればわかるよ



762 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 00:17:55.95 ID:PYPomZFd0.net]
それはメモリー不足が何時起きるか分からないと言ってるのと同じ事ですが

763 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 00:44:18.64 ID:8IYUkFNt0.net]
スタックオーバーフローという
エラーメッセージがあるのでは?

764 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 00:44:54.36 ID:8IYUkFNt0.net]
スタックオーバーフローという
エラーメッセージがあるのでは?

765 名前:デフォルトの名無しさん [2022/12/06(火) 00:47:21.54 ID:qZ0a8ZvK0.net]
スタックオーバーフローという
エラーメッセージがあるのでは?

766 名前:デフォルトの名無しさん [2022/12/06(火) 00:47:27.32 ID:qZ0a8ZvK0.net]
スタックオーバーフローという
エラーメッセージがあるのでは?

767 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 00:48:27.88 ID:PYPomZFd0.net]
スタックオーバーフローは、大規模なソフト開発とはあまり関係ないデスね
大規模なソフト開発してて、スタックオーバーフローでプログラム落ちたら、
笑われると言うか、怒られるかも

768 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 01:09:59.63 ID:LDJX4o340.net]
スタック上に大領域確保するにしても
内部で余計な関数呼ばない結果だけ返す関数作って抱え込まない
深さを限定できない再帰呼び出しもありえないし

769 名前:デフォルトの名無しさん [2022/12/06(火) 03:07:59.72 ID:PbeCdWM30.net]
699 デフォルトの名無しさん (ワッチョイ 972d-zuBb) sage 2022/12/01(木) 15:02:39.09 ID:ZPuEPm3M0
ttps://atcoder.jp/contests/abc273/submissions/35667282
このコードを実行するとscanfで入力を待つはずなのですが即座に終了してしまいます
たまにそういうコードを見かけるのですが何が原因なのでしょうか
printfを入れても実行されないのでmainがスキップしているような。。

770 名前:デフォルトの名無しさん [2022/12/06(火) 03:09:09.32 ID:PbeCdWM30.net]
>>758
いまだにhを取るあたりがもう超絶無能

771 名前:デフォルトの名無しさん [2022/12/06(火) 03:10:27.42 ID:PbeCdWM30.net]
>>758
25年くらい前のネットの書き方だな



772 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 08:24:16.80 ID:zdZ3zkNx0.net]
Win98時代は1Mバイト程度の配列変数作っただけで動作がおかしくなってたな。
スタック増やせって言われてコンパイルオプション弄ったけど改善しなかった記憶・・・。

DOSからWinに来たときは64kバイト以上のメモリ確保さえ避けてた。

773 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 08:27:50.69 ID:63yxghiR0.net]
そりゃー8086のセグメント方式なんだから64k超えは問題ありまくりんぐでそ

774 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 11:20:14.67 ID:yvaEv+2ca.net]
>>761
> Win98時代は1Mバイト程度の配列変数作っただけで動作がおかしくなってたな。
それは今でも一緒だろ
Windows の既定のスタックサイズは1MBのままだぞ
https://learn.microsoft.com/ja-jp/windows/win32/procthread/thread-stack-size

775 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 11:30:06.24 ID:PYPomZFd0.net]
MS-DOSの頃は、メモリ1MB積んだPCってスゴイ豪華な印象だったな
搭載メモリーを使い切る様なプログラムを、オレは書けるんかって思ってた

776 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 12:01:21.10 ID:63yxghiR0.net]
I/Oバンク方式かEMSかって時代か

777 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 14:59:37.11 ID:iX2JPZR5d.net]
本当のメインメモリとして使えたのは640kBまでで
残りの384kBはバンクかEMSの増設メモリだった

778 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 19:43:39.61 ID:PYPomZFd0.net]
最初はハードウェアで実装してたけれど
そのうち仮想86モードだったかで、
特別なハードを追加せずにメモリアクセス出来る様になってたね

779 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 20:33:29.46 ID:zjGx1PLy0.net]
>>766
残りはハードウェアのIOやらROMやらVRAMなどだ
EMSウインドウはその開いている隙間アドレスにねじ込んだだけ

780 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 21:49:14.42 ID:63yxghiR0.net]
>>767
あったねー、ソフトウエアEMS>ハードウエアEMSなんて珍現象

781 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 05:45:28.61 ID:QbuGAkRx0.net]
#include <stdio.h>
#include <time.h>

void
main(void)
{
time_t now, now2;

now = time(NULL);
now2 = time(NULL);
struct tm *tm1 = localtime(&now);
struct tm *tm2 = localtime(&now2);

tm2->tm_mday = 1;
tm2->tm_mon = 1;

printf("%d %d\n", tm1->tm_mday, tm1->tm_mon);
printf("%d %d\n", tm2->tm_mday, tm2->tm_mon);
}



782 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 05:46:27.95 ID:QbuGAkRx0.net]
tm2を変更するとtm1も同じ値になってしまいます。
回避方法を教えて下さい。

783 名前:泣gの名無しさん mailto:sage [2022/12/09(金) 05:47:05.17 ID:QbuGAkRx0.net]
OS:Linux Mint
コンパイラ:gcc です

784 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 06:15:54.45 ID:rdO0dbBS0.net]
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/ctime.3.html
localtime_r()を使いましょう

struct tm *tm1 = localtime(&now);
こんな使い方をするって時点でlocaltime()が「何」を返すのか、察しましょう

785 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 06:58:19.07 ID:QbuGAkRx0.net]
>>773
サンクス、動いた

786 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 07:14:28.04 ID:aKtIUC7D0.net]
このへん、言っちゃなんだけどクソだね
なんでこんな変な設計にしたんだろう

787 名前:デフォルトの名無しさん [2022/12/09(金) 07:27:22.65 ID:G83XZmEL0.net]
ローカルで構造体を定義してそこへのポインタを返すとスタックから消えてデータが壊れますか?

788 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 07:54:25.65 ID:DDM/thjI0.net]
>>775
いちいち使う人に領域確保させる手間をかけさせたくなかったってことでしょ
マルチスレッドなんてない時代だし

789 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 07:57:34.07 ID:DDM/thjI0.net]
>>776
構造体に限らずローカル変数へのポインタを返すとポインタの指す先の内容は壊れる(かもしれない)

790 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 13:31:15.00 ID:RVIOSi06d.net]
未定義の動作という

791 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 15:26:27.10 ID:Z1cscK2ka.net]
>>775
strtok



792 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 15:41:02.97 ID:8zaQFmsV0.net]
何らかの要因でテンパって煮詰まってコーディングしてて
変なものができてしまうこと、皆さんも経験あるのでは

793 名前:はちみつ餃子 mailto:sage [2022/12/09(金) 17:25:23.52 ID:Qnrm7z6h0.net]
>>776
スタックから消えるというか、言語仕様的な用語でいうと生存期間が終了していることになる。
そんでオブジェクトを生存期間の外部で参照したときの動作は未定義なので何が起こるかわからん。
C でいう未定義ってのは「何が起きてもいい」なのでデータが壊れる (意味不明の値が読みだされる) だけでは済まないかもしれない。

794 名前:デフォルトの名無しさん mailto:sage [2022/12/09(金) 17:34:59.55 ID:i/ZE6Izl0.net]
恋と同じで、はかなく消える運命

795 名前:デフォルトの名無しさん [2022/12/10(土) 01:00:03.41 ID:ap6EnRqC0.net]
>>776
すぐ消えないことがあるので読めてしまうかも知れない。しかし何かをすると一瞬にして破壊されて終わるかも知れない。
あてにしてはいけない。

ていうかこの頃のコンパイラってそういうのは警告出したりエラー扱いにしない?

796 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 08:35:32.63 ID:0yWWcyiC0.net]
コンパイル時に常に摘出できるわけじゃないし

797 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 08:43:06.25 ID:VZKCrGXt0.net]
いやバグは睾丸みたいに摘出はできないだろ

798 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 11:08:12.32 ID:8LaJbp4o0.net]
warning C4172: ローカル変数またはテンポラリのアドレスを返します: hoge

VS2022

799 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 11:18:10.60 ID:W5v0KihFa.net]
>>787
https://learn.microsoft.com/ja-jp/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4172?view=msvc-170

800 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 11:34:37.41 ID:FHzDIuwr0.net]
そういうときはレジスタ変数のアドレスを返すようにコーディングしなさい

801 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 11:49:59.77 ID:n733SMJ50.net]
staticの出番は?



802 名前:デフォルトの名無しさん [2022/12/10(土) 12:13:19.32 ID:9jPqI4Xva.net]
そして>>773の仕様となるのであった…

803 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 12:55:16.29 ID:8LaJbp4o0.net]
int *fuga(void){
 register int i = 123;
 return &i;
}

error C2103: '&' レジスタ変数のアドレスを得ようとしました。

ふむ

804 名前:デフォルトの名無しさん [2022/12/10(土) 13:24:22.34 ID:HjLF/vvU0.net]
>>788
説明とコードが対応してる気がしない
どういうこと?

805 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 13:32:02.53 ID:GuAR5Ny/0.net]
>>348
レジスタに割り当てた変数には左辺値はないよ
だって、ハードウェアのレジスタだから

806 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 13:43:23.28 ID:VZKCrGXt0.net]
言いたいことはわかるけど日本語が変
左辺値はメモリアクセスを意味する式なので
レジスタに左辺値がないのではなく
記憶クラスがregisterの変数の識別子は左辺値ではない

807 名前:デフォルトの名無しさん [2022/12/10(土) 13:46:04.91 ID:HjLF/vvU0.net]
>>789への疑問やろ

808 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 14:05:33.41 ID:lr6mtoK80.net]
>>793
floatからdoubleへ変換したうえでその参照を返してる
パッと見分かり辛くて人間の認知への挑戦かと思うなw

809 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-3TNT) mailto:sage [2022/12/10(土) 15:12:06.94 ID:brInbnm70.net]
>>792
register 指定が付いたらアドレスを取る操作自体が出来なくなるように制限されてるよ。
配列を register 付きで宣言したらなにも出来なさ過ぎてワロタwwwというのはよくあるネタ。
(言語仕様的には配列 (の要素) へのアクセスもポインタ演算の構文等になってるから暗黙にアドレスを取る操作。)

>>794-795
左辺値であるかどうかと記憶クラスは関係ない。
必ずしもメモリにアクセスすることを意味しない。
register 宣言でアドレスを取れなくなるのは左辺値でなくなるからではなく
& のオペランドは register 付きで宣言されたものであってはならないという直接的な制約。
どこをどう見ても左辺値の定義自体には register 指定は関係しない。

更に C99 の 6.5.3.2 から単項 & の制約について抜粋

> The operand of the unary & operator shall be either a function designator, the result of a
> [] or unary * operator, or an lvalue that designates an object that is not a bit-field and is
> not declared with the register storage-class specifier.

JIS の日本語だとこうなってる。

> 単項&演算子のオペランドは,関数指示子,[]演算子若しくは単項*演算子の結果,又は左辺値でな
> ければならない。左辺値の場合,ビットフィールドでもなく,register記憶域クラス指定子付きで宣言
> されてもいないオブジェクトを指し示さなければならない。

左辺値のときは register 指定されていてはいけないというのは逆に言えば register 指定されている左辺値というものも存在することを示唆する。

810 名前:デフォルトの名無しさん (ワッチョイ 27c2-aipL) mailto:sage [2022/12/10(土) 15:19:28.45 ID:VZKCrGXt0.net]
> register 指定されている左辺値というものも存在することを示唆する。

具体例ある?

811 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-3TNT) mailto:sage [2022/12/10(土) 15:24:22.50 ID:brInbnm70.net]
>>799
具体例というか、 register 指定は左辺値か右辺値かの定義に無関係なので
左辺値なものは register 指定されていようがいまいが左辺値って話。

変数の宣言のときに register 指定を付けたら全て register 指定のついた左辺値だよ。



812 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 15:44:01.19 ID:VZKCrGXt0.net]
メモリにアクセスすることを意味するでしょ。

6.3.2.1 左辺値
左辺値が評価されたときにオブジェクトを指し示していなければ,動作は未定義とする。

3.14 オブジェクト(object) その内容によって,値を表現することができる実行環境中の記憶域の部分。
参考オブジェクトを参照する場合,オブジェクトは,特定の型をもっていると解釈してもよい(6.3.2.1 参照)。

なんでそういう決まりになっているのかを理解せずに条文の字面に書いてあることだけ表面的に言う人とは歯車が噛み合わないな。

813 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 15:50:02.57 ID:gyOVa4Se0.net]
>>792みたいなのはレジスタ変数じゃなくてもやっちゃダメだけどw

814 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 15:51:48.45 ID:zHuXawkZa.net]
昔の CPU はレジスタが少なくて
なんでもかんでも register 付けて宣言すると
CPU の持ってる実 register 数以上に宣言してしまうことが多い
では使い切った後の変数はどこに割り当てられる

815 名前:フか? []
[ここ壊れてます]

816 名前:はちみつ餃子 mailto:sage [2022/12/10(土) 16:30:03.16 ID:brInbnm70.net]
>>801
話を >>794 といっしょくたにしたのが誤りだった。 すまぬ。

> ハードウェアのレジスタだから
の続きで
> メモリアクセスを意味する式なので
をハードウェア的なメモリアクセスの意味で解釈してしまった。
むしろそんなん関係なく言語仕様上の意味で反論してたんだね。

(後から読む人のために補足すると C の言語仕様でいう実行環境は言語仕様で規定する仮想的な実行環境の
ことであって実際の機械語とどう対応づけるか規定されない。 どういう機械語が生成されるかは
言語の意味の根拠にならないので言語仕様で再解釈しようとしたのが >>795 だと私は解釈した。)

が、言語仕様の解釈として

> registerの変数の識別子は左辺値ではない

の部分が誤っているということには変わりないよ。

817 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 21:03:51.14 ID:iVr3EzOTM.net]
レジスターにもアドレスを割り当てておいたら良かったかも

818 名前:デフォルトの名無しさん mailto:sage [2022/12/10(土) 22:47:45.19 ID:37vQL6PeM.net]
昔6800系CPUはメモリの固定番地をレジスターと同格に扱うダイレクトメモリアドレッシングで見かけのレジスタ数を増やしていた

819 名前:デフォルトの名無しさん (ワッチョイ 7f63-KKgq) mailto:sage [2022/12/10(土) 22:55:13.62 ID:FHzDIuwr0.net]
レジスタを指すポインタをインクリメントすると、別のレジスタの値を書き換えられる、とか

820 名前:デフォルトの名無しさん (ラクッペペ MM8f-JsS5) mailto:sage [2022/12/10(土) 22:59:08.86 ID:cw57tQlnM.net]
組込み用の8ビットCPUでも同じような機能があるものもある
ダイレクトアドレッシング、ダイレクトページアドレッシングなど殆どは8ビットアドレスのゼロページ目をレジスタと見做して
メモリ経由することなく直接ALUで演算を行なうことが出来る

821 名前:デフォルトの名無しさん (ワッチョイ 7f63-KKgq) mailto:sage [2022/12/10(土) 23:32:50.32 ID:FHzDIuwr0.net]
レジスター配列とかプログラムコードをレジスタに置くとか



822 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 03:20:22.27 ID:BIXjZcK80.net]
>>804
左辺値がメモリアクセスを意味するのに?

823 名前:はちみつ餃子 mailto:sage [2022/12/11(日) 03:56:09.23 ID:ftKoc+Hh0.net]
>>810
言語仕様では抽象計算機での動作として記述される。 (C99 なら 5.1.2.3?を参照)
記憶域として書かれているものは抽象的な意味の上での記憶域であって、
実際のメモリにアクセスするかどうかはコンパイラの裁量。
register 指定は変数の意味に関与せず、抽象機械の動作の上ではごく普通に記憶域に割り当てられているのと同じ。
その上で register 指定は「可能な限り速いアクセスを期待する」というヒントであることと、アドレスが取れなくなるという制約が付く。

register 指定は抽象機械の上での記憶域をハードウェアのレジスタに割り当てるなどして高速化してくれたらうれしいなぁ (/ω・\)チラッ
という指定であって、言語の理屈の上ではアドレスを取れない以外の何の意味も持たない。

824 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 06:45:02.24 ID:BIXjZcK80.net]
抽象計算機の記憶域がメモリではないって?
もういい、あんたとは話にならん

825 名前:はちみつ餃子 mailto:sage [2022/12/11(日) 06:47:07.10 ID:ftKoc+Hh0.net]
>>812
根本的には register 指定で左辺値でなくなったりはしないという話をしてるんで。

826 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 07:35:55.41 ID:BIXjZcK80.net]
その話の根拠に疑問を示したんだけど、例の屁理屈に逃げるんでもういい

827 名前:はちみつ餃子 mailto:sage [2022/12/11(日) 08:06:06.44 ID:ftKoc+Hh0.net]
>>814
言語仕様でそうなっているという以外に根拠が必要か?

828 名前:はちみつ餃子 mailto:sage [2022/12/11(日) 08:12:25.56 ID:ftKoc+Hh0.net]
clang で抽象構文木を見る機能があったわ。
lvalue ってなってるだろ。

https://wandbox.org/permlink/j4csi19c5wVPE8ff

829 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 08:25:20.92 ID:BIXjZcK80.net]
>>815
しつこい

830 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 09:45:19.90 ID:B9k8N7vL0.net]
>>805
そういうプロセッサーはあるよ(ディスコンしてるけど)
https://i.imgur.com/Lqs3ejR.jpg
Z80 の裏レジスタは裏側のレジスタを直接触れなくてモヤモヤしたけどこいつは他のバンクのレジスタも直接さわれるからちょっと便利
PCとかもメモリー空間に見えてるプロセッサーもあったような気がするけど具体的なプロセッサー名を思い出せない

>>806
それはちょっと話が違う
単にアドレッシングモードとしてゼロページやダイレクトページが短いコードで扱えると言うだけのことでメモリーはあくまでもメモリー
例えば6800はPSH AでAレジスタをスタックにプッシュ出来るけどゼロページの内容を直接

831 名前:プッシュ出来るわけじゃない
6502 のインダイレクト・インデックストYぐらいの機能ならまあベースレジスタをメモリー上に置けるとは言えるけど
[]
[ここ壊れてます]



832 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 09:47:13.53 ID:B9k8N7vL0.net]
>>817
しつこいのは君かと
そもそも左辺値なんて言語仕様で定義されてるんだから仕様書で反論できない時点でお前の負け

833 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 10:26:09.32 ID:2yXQoOg9d.net]
IDコロコロ

834 名前:はちみつ餃子 mailto:sage [2022/12/11(日) 10:45:16.87 ID:ftKoc+Hh0.net]
>>819
べつに勝ち負けを競っているわけじゃない。
根拠 (この場合は言語仕様) に基づく解釈の妥当性がそれで変わることはないので納得しない誰かがいても不都合もない。
5ch に書き込むのはただの暇つぶしだ。
どうせほかに話題もないんだからしつこくてもいいんじゃね。
反応するかどうかは知らんけど。

835 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 11:25:34.59 ID:RuZtb54i0.net]
>>821
そういうレスは流石にしつこいわ

836 名前:デフォルトの名無しさん (ワッチョイ 87bb-3TNT) mailto:sage [2022/12/11(日) 15:02:48.86 ID:51+9+dkC0.net]
ブレークブレークw

837 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 15:25:03.37 ID:jc+ZhrAU0.net]
みんな仲良くしなよ

838 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 17:37:29.66 ID:kiLLcra70.net]
ポインタは卒業した。コンパイラあるんだから、ググるより書いて結果を見たほうが早いぞ。
何十回も繰り返せばわかるはず。

839 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 17:42:03.60 ID:kiLLcra70.net]
亀レスだが機械語を知らないと、いい高級言語は書けない、ってのはわからん。
機械語と高級言語は別物だろう。

機械語を簡単に理解できる知能水準の人は、高級言語を新しく学習したときも
たやすく理解できる、

というのが実態なのに、ネットでは背びれ尾ひれついて、「ハードウェアを知らないと、〜」みたいな
論調が市民権を得ているな。

840 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 18:08:31.63 ID:3kpvLkL20.net]
CやC++はアセンブラレベルが理解出来ないとそもそも実装が無茶苦茶だったりするけど
ポインタとかが無いJavaとかはそこまでアセンブラレベルでどうのこうのってのは無いが
それでもコンピュータ的な知識が皆無な奴は論理演算を理解出来なかったりするし
ビットシフトみたいなことやってると、何でこんな書き方しているの?みたいな事言う奴出てくるからなぁw

841 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 18:39:34.39 ID:jc+ZhrAU0.net]
それがメモリー上二銅格納されてるか位は知っておいた方が良いよ
配列データをソートする時、どうやると効率的かがすぐ分かる



842 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 18:40:10.49 ID:jc+ZhrAU0.net]
メモリー上にどう格納

843 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 18:50:45.41 ID:DhbhWaSTM.net]
2の補数表現の知識は機械語の範疇だろう
スタックもそうだ
Cの仕様にスタックなんて言葉は出てこないからな
register指定も完全に機械語だ
タイマとか割り込みを扱う場合は機械語の知識も必要だな
setjmp longjmpも何が保存されてるのか理解するには機械語の知識が必要だ
要するに機械語の知識は必要だ

844 名前:はちみつ餃子 mailto:sage [2022/12/11(日) 19:18:24.83 ID:ftKoc+Hh0.net]
>>825
ポインタ演算は未定義動作を簡単に引き起こせてしまうので
十分に理解できてない状態で実際に動作させてみるというのはあまりあてにならない。
ある程度は理解した上で実際にやってみたら納得しやすいってことならわかるけど。

845 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 19:19:01.91 ID:HcYuyEaDa.net]
何十年前の話題を蒸し返してるのか知らんけど今のコンパイラは賢いからregisterとか使う必要ないぞ
むしろ人間が余計な指示を出すことで効率が悪くなる可能性すらあるからハードウェアの知識が云々とかいう老害理論はパイプラインとかキャッシュとかを全て把握してから言ってくれ
君たちの時代は終わったんだよ

846 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 19:29:49.83 ID:vn3Pz69o0.net]
register なんてあてにならんもん、使ってる奴いなかったと思うよ
本当に速くしたい所は、それこそインラインアセンブラ使ったり
アセンブルしたルーチン呼んでたし

847 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 19:33:50.07 ID:HcYuyEaDa.net]
>>833
コンパイラが本当に愚直な時は最適化無しで使ってたぞ

848 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 19:38:52.22 ID:vn3Pz69o0.net]
それは失礼した

849 名前:はちみつ餃子 mailto:sage [2022/12/11(日) 19:39:00.70 ID:ftKoc+Hh0.net]
少なくとも gcc とか clang くらいのモダンな処理系ではコンパイラの判断のほうが賢いわな。

低レイヤのコードだと人手で指定を付けたいときもあるかもしれんが
そういう分野ではどうせ処理系の拡張がなきゃどうにもならんので
register キーワード程度のあやふやなものひとつを言語仕様に入れてもあまり役に立たない。
C++ では register は削除された (機能は削除されたがキーワードとしては予約語のまま) わけだし、
C でもその内に削除されるんじゃないかな。

850 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 20:04:06.71 ID:8Gp9TgZBa.net]
register なんて要らんとか昔からずーっと言われてるけど
つけたらつけたで速くなったのその目で見たやつも居るでしょ?
gcc と gprof だけで頑張ってたとき確かに速くなったけど
だから register は有効有用使うべきとは言わないけどね

851 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 21:31:25.77 ID:OhnENqmv0.net]
>>830
>setjmp longjmpも何が保存されてるのか理解するには機械語の知識が必要だ
基本スタックポインタとプログラムカウンタだけだと思っていましたが、まあレジスタ全部と他何を保存してましたっけ?



852 名前:ハノン mailto:sage [2022/12/11(日) 22:26:47.72 ID:OhnENqmv0.net]
>>836
>C++ では register は削除された (機能は削除されたがキーワードとしては予約語のまま)
auto のように別の形で復活しそうですね
あと、asm はどうなりましたか?

853 名前:デフォルトの名無しさん mailto:sage [2022/12/11(日) 22:34:58.44 ID:IkAIpxjPM.net]
>>838
基本レジスタ全部だな(OSが使うレジスタは含まず)
他は無いはずだけど
ただ、戻り値にレジスタを使ってる場合は、そのレジスタは書き換えられてるだろう

854 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 06:30:06.98 ID:ychPXO7Q0.net]
メジャーどころのCPUは大抵、戻り値はレジスタだね

855 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 07:28:31.07 ID:v0et11DOM.net]
呼出規約
https://ja.wikipedia.org/wiki/%E5%91%BC%E5%87%BA%E8%A6%8F%E7%B4%84

856 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 14:27:00.05 ID:Y3syqvcfd.net]
static記憶クラス指定子の理解はできますが、いざプログラムを組んでみると、使い方がわかりません。

857 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 14:36:59.78 ID:jnrvptAKa.net]
>>841
CPU関係あるか?

858 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 14:37:08.19 ID:RmZ1ojDx0.net]
わかるものを使えばいいよ

859 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 15:05:24.79 ID:BWUj5Mhq0.net]
意訳
メジャーどころのCPU(に対応したCコンパイラ)は大抵、戻り値はレジスタだね

ではないかと
VCだとコンパイルオプションで変化した記憶がある

860 名前:はちみつ餃子 mailto:sage [2022/12/12(月) 16:42:43.35 ID:J7ftRWn10.net]
>>844
呼び出し規約 (を含む ABI) の策定はアーキテクチャを設計したところが主導するもんじゃないのかな。
CPU の特性に反した使い方を基本にされても困るだろうし。
ざっと調べた感じだとよく使われている System V ABI はインテルが議長の委員会で決める体制っぽい。

マイクロソフト (Windows) は引数の渡し方がちょっと違う規約でやってて
文句も出てない (出てないよね?) からそんなに強い強制力があるわけでもないんだろうけど、
CPU ごとに常識的な使い方というものはあるだろう。

861 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 16:59:57.60 ID:RmZ1ojDx0.net]
B言語でも戻り値はレジスタだったし



862 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 19:01:13.79 ID:xR631HBma.net]
>>847
マイクロソフトが作ってるハードはSurfaceとかだろ?

863 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 19:19:51.33 ID:m7KoqGgA0.net]
DOS時代にグラフィックライブラリとかをMASMでアセンブルして出来たobjファイルを
Cコンパイラで作ったobjとをリンクさせて
Cからアセンブラのルーチン呼び出したりしてたけど、
COBOLやFORTRANで作った関数をリンクさせて
Cで呼び出したりも出来るの?

864 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 19:31:09.72 ID:BWUj5Mhq0.net]
FORTRANなら呼べると思うが、COBOLは分からない

FORTRANやCOBOLからならCの関数は呼べたと思う

865 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 19:34:09.58 ID:2yJi4NkT0.net]
objファイルは流石に無理があるけどDLLや静的ライブラリでも作れば良いだけでは?
gfortranならexe以外にもDLL等が作成出来る

866 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 19:37:26.25 ID:BWUj5Mhq0.net]
受け渡しのデータ型も割と近くないかな?

867 名前:デフォルトの名無しさん (ワッチョイ a701-3npV) mailto:sage [2022/12/12(月) 19:39:34.73 ID:qCai2YYC0.net]
引数の積みかたやらスタックフレームの巻き戻しはどっちがやるか等の約束事が
シンプルに固定されてるDLLなら他所言語への持ち出しや持ち入れがやりやすいわね

868 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 20:17:18.59 ID:munrOkPw0.net]
>>828 まあ・・C言語を触るぐらいだから、一般的には大学とかのコンピュータサイエンス教科を
履修しているのが前提だろうから、そこはあえて省略したのですが・・

昔の高校生は頭がよかったけど。

今は「仕事でC言語を触らせてくれる身分」になるためには基本、情報系の大卒でしょうし・・

869 名前:デフォルトの名無しさん mailto:sage [2022/12/12(月) 20:18:59.06 ID:munrOkPw0.net]
>>828 配列のソートってメモリ意識しますかね。フラグメンテーションとか考えたこともないな・・。
単純に演算オーダー(log O^n とか・・)そんな感じである程度予測を立てて、あとは扱うデータ次第かと。

870 名前:はちみつ餃子 mailto:sage [2022/12/12(月) 21:58:34.14 ID:J7ftRWn10.net]
アルゴリズムのレベルではある程度の効率は事前に考えるけど
断片化とかキャッシュヒットとかはチューニングが必要な状況になるまで考えないな。
むしろ考慮したくなっても意識的に忘れるようにする。
いわゆる「早すぎる最適化」の一種だから。

当然ながら必要になったときには知っている必要はあるんだけどそんな機会は多くないよね。
普通の (アルゴリズムのレベルでは充分に配慮された) プログラムを書いて極端に効率が悪いようなら
メモリアロケータやキャッシュの設計のほうが悪い。
(そうは言っても目の前にあるものがそうなってるなら自分のほうが合わさないとしょうがないんだろうけどさ……)

871 名前:ハノン mailto:sage [2022/12/12(月) 22:18:23.35 ID:1Of7Vyge0.net]
>>847
win32api はなぜ PASCAL にしたんでしょうかね?



872 名前:ハノン mailto:sage [2022/12/12(月) 22:21:28.35 ID:1Of7Vyge0.net]
>>847
AMD64 は AMD が呼び出し規約まで決めちゃったけれども、普通は OS 屋が決めるものという気がしますけどね

873 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-3TNT) mailto:sage [2022/12/12(月) 23:05:07.66 ID:J7ftRWn10.net]
>>839
register というキーワードが将来に転用 (repurposing) 出来るようにというのは書かれている。
https://timsong-cpp.github.io/cppwp/n4659/diff.cpp14.dcl.dcl

auto という名前が新しい用途にぴったり (少なくとも不自然ではない) なので
それと同じくらいに register という名前が丁度良い場面というのは全く想像がつかないんだけど
思いもよらぬ形で上手いこと使われることはあるかもしれんね。

メンバ関数の宣言のときの default とか delete とかも考えたやつは天才じゃん……と私は思ったよ。

874 名前:デフォルトの名無しさん (ワッチョイ 7f63-KKgq) mailto:sage [2022/12/12(月) 23:08:20.90 ID:BWUj5Mhq0.net]
switch文のdefaultはたまに綴りを間違えてしまうw

875 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-3TNT) mailto:sage [2022/12/12(月) 23:14:51.65 ID:J7ftRWn10.net]
>>861
あれの問題点は綴りを間違えてもラベルという扱いになってしまってエラーとして検出されないところなんよね。
処理系やオプションによっては使われていないラベルとして警告が出たりはするんだけど。

876 名前:デフォルトの名無しさん (スフッ Sdff-d44j) mailto:sage [2022/12/12(月) 23:35:39.10 ID:zHXfNaq5d.net]
転用とかややこしいだけだから勘弁
自動でautoだからあんまり気にすんなよ、ちなc++ではこんな意味だよと、またややこしい補足が増えるだけ
むしろアンスコ付きの変な名前の方がかえってキーワードなんだなと分かりやすい、ソースは醜くなるけど、それは今更

877 名前:デフォルトの名無しさん (ワッチョイ 7fcf-FUlb) mailto:sage [2022/12/13(火) 00:08:19.11 ID:HbzfEbfW0.net]
auto も B言語の名残りだか後方互換だかで、
Bではデータ型がなくて、変数=整数が文脈により、ポインタとしても使われた
その storage classesとして、automatic, external, internal の3種類があった

main() {
extrn putchar, n, v;
auto i, c, col, a;
(略)
putchar('*n*n');
}

v[2000];
n 2000;

という風に auto で変数を宣言していた

878 名前:デフォルトの名無しさん (スフッ Sdff-d44j) mailto:sage [2022/12/13(火) 00:29:54.37 ID:+JwZZYrvd.net]
他に触る言語で明示的にauto宣言するのはbcかな、オモチャみたいなもんでPOSIXも有名無実で仕様なんぞ無いに等しいが

ポインタは明示的に触らないけど、エミュる時は配列の添字にauto変数(整数)突っ込むからむしろCよりBっぽい

879 名前:デフォルトの名無しさん (ワッチョイ 7f63-KKgq) mailto:sage [2022/12/13(火) 00:36:12.95 ID:FXPyPtyo0.net]
可変長で必要に応じて伸び縮みする配列とか、
桁数制限無しの整数型や計算誤差のない実数型とか

誰か作って(人任せ)

880 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 06:01:01.43 ID:d0KqwuA/0.net]
> 桁数制限無しの整数型

つGMP

881 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 07:11:07.69 ID:ZjPntofYa.net]
>>858
当時流行ってたからだろ



882 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 07:11:26.57 ID:4+XH+KhI0.net]
>>866
>桁数制限無しの整数型
https://mevius.5ch.net/test/read.cgi/tech/1434079972/84

883 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 13:48:16.74 ID:aee1RRAhM.net]
計算誤差の無い実数型って不可能だけどなw
decimalを使うと2進数は10進数の浮動小数点数を正確に表現出来ない問題を解消できる
ratio(分数)を使うと、1/3とかをそのまま保持出来るから誤差が出ない
ちなみに、Common Lispは分数を凄い簡単に扱えるしbignumも使える
Cでもそうなって欲しいもんだ

884 名前:デフォルトの名無しさん mailto:sage [2022/12/13(火) 13:59:48.87 ID:7PNjtjtua.net]
なぜ分数や多倍長整数が必要な案件にCなんかを使うのか

885 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 12:00:46.68 ID:erx97Ujd0.net]
虚数や複素数も扱えてたよね
あまり使い道はないかも知れないが

886 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 13:40:07.30 ID:XaqmHtNn0.net]
区間を分割して評価、終了判定がintegerpで判定とか細かい所で色々楽はできるだろう
単にスケールしても済むし、何回もやるなら任意精度でない有理型くらい構造体とgcdさえ書ければ誰でも書けるだろ

用途が違うし別にclは推さんが、標準の一つであるcltl2はあらゆるプログラマに貴重な書
浮動小数点演算に関しても複素関数の豊富なプロット載せて定義やブランチカット選びの良し悪しにかなりページ割いて、その図の生成に使ったpsコード生成コードも載ってる

つーか>>866はbcって言って欲しいだけでしょ、おまえら釣られすぎ

887 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 14:04:41.21 ID:XaqmHtNn0.net]
<cmath.h>徹底解剖みたいな文献って無いんだろうか

888 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 14:17:47.17 ID:XaqmHtNn0.net]
complex.hだった
最近触り始めたpythonでcmathだから素で間違えた
んでc++はmath.hが<cmath>と…

889 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-3TNT) mailto:sage [2022/12/14(水) 16:18:53.52 ID:YAu9ihh40.net]
math.h と cmath とは事情がややこしいので単に名前が変わっただけとは思わないほうがいい。
math.h の関数は多相化されてなくてマクロで多相化された版は tgmath.h にある。
cmath の多相化にはテンプレートが使われている。

890 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 19:29:35.78 ID:XaqmHtNn0.net]
Cのtgmathの方が(実装的な意味で)エグいよね
よくマクロの真髄みたいに色んな実装が紹介されるし、ちゃんと動いてるんだろうけど
ちょっと訳がわからないものは避けたい…

_Genericでスッキリ書けたりしないのだろうか

891 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 20:13:04.33 ID:h6lYzG45d.net]
ヘッダに直書きされてるから目につく機会が多いだけで、内部的にやっても同じロジックが隠れるだけか
気にし出せばきりがないようにも思う



892 名前:デフォルトの名無しさん mailto:sage [2022/12/14(水) 20:45:14.60 ID:QXbvEgmH0.net]
>>874
<ccmath>?

893 名前:はちみつ餃子 mailto:sage [2022/12/15(木) 14:40:26.12 ID:xFKc8Du50.net]
>>877
_Generic で素直に分岐すれば問題なくかけるよ。
tgmath.h が規格に入ったとき (C99) は規格の範囲内でやる方法は無かったので
処理系の拡張を使ったり新たな拡張を作ったりしてなんとかなったのだがやっぱりそれは
あかんやろと思ったのか C11 で _Generic を入れることになった。

ただ、処理系は C99 に厳密なモードを持つことがあるからそのモードで動かしたときに
ヘッダ内の _Generic についていちいち警告なりエラーなりが出るのもよろしくないし、
#ifdef で分けるのも二度手間だし、
旧来通りの実装で残すのはそれなりに合理的なんだと思う。

ありがたいことに普通に使う分には標準ヘッダの実体を気にする必要はないのだから忘れておくのが幸せだろう。

894 名前:デフォルトの名無しさん [2022/12/21(水) 10:08:23.47 ID:537DsEmx0.net]
// エラーを報告するための関数
// printfと同じ引数を取る
void error(char *fmt, ...) {
va_list ap;
va_start(ap, fmt);
vfprintf(stderr, fmt, ap);
fprintf(stderr, "\n");
exit(1);
}
これってprintfをerrorに変えただけって認識でok

895 名前:デフォルトの名無しさん [2022/12/21(水) 10:08:47.18 ID:537DsEmx0.net]
すまん誤爆した

896 名前:デフォルトの名無しさん [2022/12/21(水) 10:11:35.91 ID:537DsEmx0.net]
これってprintfをerrorに変えただけって認識でok?
error("引数の個数が正しくありません");と
fprintf(stderr, "引数の個数が正しくありません\n");
の違いを誰か教えてくれ

897 名前:はちみつ餃子 mailto:sage [2022/12/21(水) 10:21:03.43 ID:6CmfCawf0.net]
>>881-883
その認識でいいけどそれに加えて最後に exit で終わっているから
復旧不可能なエラーを報告するための関数なんだろ。

898 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 10:21:33.71 ID:LOXcnIHB0.net]
呼び出したら、死ぬ?

899 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 10:31:04.10 ID:Fs8T+fBed.net]
そのerrorならexit以外そうじゃね
perror(msg)はもう少し賢くて
fprintf(stderror, "%s: %s\n", msg, strerror(errno))
相当(by k&r2e)

900 名前:デフォルトの名無しさん [2022/12/21(水) 10:34:02.36 ID:537DsEmx0.net]
>>884
こんな時間にありがとう、助かる。
fprintf(stderr, "引数の個数が正しくありません\n");と同じってことやな
これにexitを加えて関数にしたのがerrorってことやね
わざわざerror関数にする必要性がわからんかったから助かったわ

901 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 10:37:12.34 ID:LOXcnIHB0.net]
私なら、error()を呼び出した側でexit()呼ぶなあ



902 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 10:39:53.43 ID:Fs8T+fBed.net]
ステータス選べるしな
わざわざexitに渡すステータス引数を拵えるくらいならexit読んだ方が早い

903 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 10:51:42.39 ID:Fs8T+fBed.net]
>>881
あ、地味にfprintf(stderr, "\n")でフラッシュしてるのに気付いた
あるいはfmtへの\n付け忘れ防止配慮か
基本stderrはこまめにフラッシュされるものと思ってるけど、fflushや"\n"で念を入れても損は無いな

904 名前:はちみつ餃子 mailto:sage [2022/12/21(水) 11:33:17.33 ID:6CmfCawf0.net]
言語仕様では exit で終了とか main の終端に到達した場合に全てのオープンされているファイルはクローズする
(そのときに全ての出力ストリームをフラッシュする) というのは保証してる。

エラーが起きている状況でどこまで信用できるかよくわからんから念押ししても損はないだろうけど。

905 名前:デフォルトの名無しさん [2022/12/21(水) 15:19:19.23 ID:537DsEmx0.net]
codepad.org/noY0x7K2
これの70行目と79行目の*ってただただ関数でポインタを扱うよってだけ?
なんか関数ポインタと似ててどうなんやって思った
int (*func1)(char*, int);

906 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 15:23:54.32 ID:WXW0EqS+d.net]
なんか質問者はexit呼ばないんだったら関数化しないでええやろって思ってそうで怖いな
設計方針次第でもあるが心配になるな

907 名前:デフォルトの名無しさん [2022/12/21(水) 15:35:25.72 ID:537DsEmx0.net]
>>893
今学習段階だからかなりの無知なんや、すまん

908 名前:デフォルトの名無しさん [2022/12/21(水) 15:51:20.06 ID:537DsEmx0.net]
あと上のURLのプログラムのcallocではメモリ解放してないけど大丈夫なのか?

909 名前:はちみつ餃子 mailto:sage [2022/12/21(水) 15:56:02.50 ID:6CmfCawf0.net]
>>892
返却値の型が Token* であるという意味。
でも文法的には * は宣言子に含まれていて Token の側じゃなく関数名がある側のグループなんよ。
だから右側に寄せて書く習慣になってる。
C の宣言の文法が無茶苦茶なのはイマサラな話なので……。

可変長引数の扱いも低レイヤの事情が見え隠れするような古の設計なので
歴史的事情を知らんとわけわからんのもしょうがないとは思う。

910 名前:デフォルトの名無しさん (ワッチョイ 7e02-evpg) mailto:sage [2022/12/21(水) 16:08:16.37 ID:5pWmYDMC0.net]
一貫性が大事って意味ならそう思う、特にdiagnosticなエラー(最後まで残る)は

俺は手入力で適当なエラーメッセージ書くのは極力控えてる、例えば数学関数書いてるなら
errno = EDOM;
perror(__func__);
→my_func: Argument to the math function out of domain.
的な
手続き的なルーチン(main)なら__FILE__/__LINE__とかで

用意されてるシンボル定数で意味論が合うなら活用すべき

EDOMなんかは好きに使っていいけど、システム、IO関連のエラーは意味が直感的でなかったり、規約に厳密に従わないとerrno見るcallerが騙されたりでバグの素なので、ちゃんとマニュアル参照のこと

911 名前:デフォルトの名無しさん (ワッチョイ 2a04-e5AJ) [2022/12/21(水) 16:09:52.42 ID:537DsEmx0.net]
>>896
こりゃかなわん。
基礎から出直してくる



912 名前:デフォルトの名無しさん (ワッチョイ 7e02-evpg) mailto:sage [2022/12/21(水) 16:10:45.37 ID:5pWmYDMC0.net]
ああ、当たり前だけどerrnoを上書きする前に気付いてないフラグ立ってないかif(!errno)チェックは忘れずに
割と立ってる事がある()

913 名前:デフォルトの名無しさん (スップ Sd8a-UQjj) mailto:sage [2022/12/21(水) 16:16:43.94 ID:WXW0EqS+d.net]
>>895
勿論使い終わったら解放する必要があるので解放関数を用意してあげよう

914 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 17:55:00.19 ID:j8NGwdcp0.net]
>>895
exit() したら解放されるからいいんじゃん

って言う層が一定数いる

915 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 18:13:15.89 ID:3kYobt3Gd.net]
今、息してるのか?

916 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 18:21:41.76 ID:LOXcnIHB0.net]
一日一回再起動すれば大丈夫

917 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 21:42:34.64 ID:MxQdxJ6G0.net]
再起動なんてちまちましたことやってられるかい
電源ぶっこ抜いて入れ直すんだよ、それか蹴れば直る

918 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 11:43:33.39 ID:kpFE4WK60.net]
アプリ(強制)終了後に使ったファイル削除→このファイルは使用中です。


OSで保証されてないならアプリ側でやるしか無いじゃん。

919 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 13:27:28.75 ID:LbsYIb+eM.net]
誰かがこのPCを使っている

920 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 13:35:11.18 ID:KHPfY9lXd.net]
LANなら充分にあり得ることだな

921 名前:デフォルトの名無しさん (ワッチョイ 9710-Hnc0) mailto:sage [2022/12/22(木) 19:42:13.17 ID:/Ar1RYH70.net]
プロセス終了に関しちゃ今時のOSでハンドル握りっぱなしにはならんでしょ



922 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 20:28:13.17 ID:Q5govio9d.net]
/* 文字列を逆順にして返す関数 */
#include <stdio.h>
#include <string.h>
void reverse(char *ss);
int main(void)
{
  char tt[]= "programing game"; 

reverse(tt);
printf("tt=%s\n",tt);
return 0;
}
void reverse(char *ss)
{
int wk,pos1=0,pos2;
pos2=strlen(ss)-1;
while (pos1<pos2) {
wk=*(ss+pos1)
*(ss+pos1)=*(ss+pos2);
*(ss+pos2)=wk;
++pos1;
--pos2;
}

}
このプログラム、gccだとコンパイル出来ますが、clangだと以下のエラーになります。なぜでしょうか?
~/CCR/UserFiles/sample26.c:22:3: error:
invalid operands to binary
expression ('int' and 'char *')
*(ss+pos1)=*(ss+pos2);
^~~~~~~~~~
1 error generated

923 名前:はちみつ餃子 mailto:sage [2022/12/22(木) 20:40:06.89 ID:KT1tc7ko0.net]
>>909
wk=*(ss+pos1) の後にセミコロンが抜けてる。

924 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 20:43:53.45 ID:Q5govio9d.net]
ありがとうございます。コピペミスでした。

925 名前:はちみつ餃子 mailto:sage [2022/12/22(木) 21:11:31.21 ID:KT1tc7ko0.net]
事例としては面白いよ。
セミコロンが抜けても一応は式の形式として成立するから
型が合わないというところがエラーとして報告されちゃうんだな。

926 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 22:10:59.69 ID:dL3lthyL0.net]
昔のコンパイラならエラーなしで通してだろうな

927 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 22:43:34.75 ID:K5vPIqXq0.net]
ナウいヤングな文字列の掛け算はサポート外なんだわ
strcatで頑張れ

928 名前:デフォルトの名無しさん mailto:sage [2022/12/22(木) 23:40:21.52 ID:bege0WAi0.net]
昔のコンパイラだと=*が乗算代入だったんだけどな

929 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 08:27:13.83 ID:msM3WKDD0.net]
exit on free 論争か・・・ そういう論争があったというのは知っているが
どっちに帰着したのか知らない

930 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 08:52:05.54 ID:FPNxo7old.net]
RAIIでexitするやついたら匙投げる

931 名前:デフォルトの名無しさん mailto:sage [2022/12/24(土) 17:52:35.28 ID:aYmW2hx40.net]
プロセス終了を検知してOSで良きに測って欲しいよね



932 名前:デフォルトの名無しさん mailto:sage [2022/12/24(土) 20:25:27.94 ID:xbH5VpiM0.net]
>>917
膨大なリストなんかはいちいち解放しないで exit( ) でヒープごと解放する方が効率的なんて言う奴までいたんだよ...

933 名前:デフォルトの名無しさん mailto:sage [2022/12/24(土) 21:34:16.33 ID:aYmW2hx40.net]
いっそプログラム開始時に、
ドーンとでっかくメモリ確保して
自前でチマチマ割り当てて、
終了時にドーンと解放で良い気もする

934 名前:はちみつ餃子 mailto:sage [2022/12/25(日) 00:15:12.94 ID:8blj/qJt0.net]
そういう戦略をとっている有名なプログラムもある。
確保したメモリが結局はプログラムの最後までほとんど使用されっぱなしだということがわかっているなら
ちまちま管理

935 名前:しなくても終了と同時に全部が回収されることをあてにしても総合的なメモリ使用量は変わらない
(むしろ free のコスト分だけ節約できる) という考えをすることはあって、
リンカの LLD や Mold がそういう戦略をとっていたはず。

http サーバの h2o はセッション単位でドカンとメモリの確保と解放をしてる。

つってもプログラム全体のメモリについて見通しが立てられるということと
実行環境の事情を把握してるからそういう戦略を取れるのであって、
普通は小さなモジュールに分割するし、モジュール単位でメモリ管理に矛盾がないように設計するので
結果的にチマチマした確保と解放になる。

そこそこの規模になるとプログラムを分割せずに把握するのは大変なので凡人は小さな単位で
確保と解放をするように設計するのはしょうがないよ。
[]
[ここ壊れてます]

936 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 07:20:21.70 ID:vLPFsJBC0.net]
>>921
> 結果的にチマチマした確保と解放になる。
解放が必要なものまで>>920みたいなことしちゃダメだろ
リンカーのシンボル表みたいなのは処理中は追加オンリーで処理終了後に解放することになるから一気に解放が有効なわけで

937 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 08:37:13.23 ID:AjsJE3fQ0.net]
つまりメモリプールでしょ。昔からある戦略だ

938 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 08:49:15.44 ID:gsvPl1RZ0.net]
DOS時代の拡張子COMアプリは起動時に空いてるコンベンショナルメモリ全部(PC98ならVRAMの前まで)COMアプリに割り当てられるんだっけ。

939 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 08:59:08.85 ID:CcfMXDnS0.net]
やればできるよ
EXEとの違いはリロケーションテーブルがないってだけ
コード次第で出来んことは無いィィィ

940 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 09:03:42.49 ID:vLPFsJBC0.net]
>>923
考え方は近いがもっと特化した手法
なのでシンボル表みたいなものにしか適用できない

941 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 10:31:57.80 ID:NJW41kMTa.net]
空いてるコンベンショナルメモリ全部というと大きなメモリが割り当てられるように聞こえるけどコンベンショナルメモリは640キロバイトしかないからな
逆に小細工しないと拡張メモリ(exeで使える大きなメモリ)が使えないと言った方が正しい



942 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 11:06:28.12 ID:CcfMXDnS0.net]
リアルモードの「拡張メモリ」ならCOMでもEXEでも同じことだぞ
プロテクトモード用の「EXE」はまた別物だ
バイモーダルEXEなんてのもあったね

943 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 13:44:18.05 ID:pgi9BcgIM.net]
ラージモデルのexe、拡張子をcomに書き換えても動くのは秘密です。

944 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 15:44:19.19 ID:mgz0dfZnM.net]
exeとcomってファイル先頭のエントリーアドレスの解釈が違ってなかったっけ?
拡張子だけ変更しても暴走したような気がする

945 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 16:11:57.52 ID:zQEQkIp7H.net]
>>924
自力でシステムコール(あるいは farmalloc()) と far ポインタを扱うんだったら出来る

946 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 16:49:45.05 ID:FlWfyDt20.net]
OSは、EXEかCOMかの判定をファイル先頭2バイトで行うので
拡張子は同名実行ファイルの優先度以外には影響ありません

947 名前:デフォルトの名無しさん [2022/12/25(日) 18:17:37.99 ID:4l2e8mxL0.net]
何のOSの話なんだよ?

948 名前:デフォルトの名無しさん mailto:sage [2022/12/25(日) 22:36:13.77 ID:R9zYhJab0.net]
>>933
MS-DOS

949 名前:デフォルトの名無しさん (US 0Hd7-ij7E) mailto:sage [2022/12/25(日) 23:53:11.65 ID:3pvnVlsWH.net]
>>925
LSI-C試食版のコード64KB の制限はなんとかなりませんかね?

950 名前:デフォルトの名無しさん (ワッチョイ b363-dxp0) mailto:sage [2022/12/26(月) 00:03:12.26 ID:eX0Ff8H70.net]
試食版のコードで生成する実行プログラムを、動かす環境もってるの?

951 名前:デフォルトの名無しさん (US 0Hd7-ij7E) mailto:sage [2022/12/26(月) 01:36:38.31 ID:xk9EZjkPH.net]
>>936
t



952 名前:akeda-toshiya.my.coocan.jp/msdos/index.html []
[ここ壊れてます]

953 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 10:26:13.14 ID:eX0Ff8H70.net]
W32が動く環境があるなら、そこでネイティブに使えるコンパイラにした方が良くないかな?
試食版って事はそれを業務で使うわけではないんでしょ?

954 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 11:02:09.22 ID:+xP92Jxa0.net]
8086 の SBC とか使って趣味でなんか作ってるんじゃね
俺も会社でだけど 80186 ボードのために Visual C++ 1.52c をずっと持ってた

955 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 11:47:25.06 ID:Gtnl1i7F0.net]
C使用でも何も考えずにVC++無料版入れてるわ。
バージョンアップの度にプロジェクト作成項目に悩む・・・。

956 名前:デフォルトの名無しさん [2022/12/26(月) 11:49:12.88 ID:rbZigseYd.net]
関数のポインタの配列を返す関数の宣言を教えてくさい

957 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 12:21:30.32 ID:sWfTrmtka.net]
残念だなのび太
C言語は配列を返せないんだ

958 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 12:24:01.49 ID:XQluw9Ded.net]
>>935
試食って書いてあるの見えない?
そういう類いには意図的に制限かけてあるんだよ
有料の正規バージョンを買ってねって意味

PS3のlinux封じとは訳が違う
怒る人のいないやり方なので
脱獄は誰も手伝ってくれないよ

959 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 12:48:43.97 ID:gpJgKl24M.net]
森公一郎さん、亡くなっているんだよな

960 名前:デフォルトの名無しさん [2022/12/26(月) 12:49:38.27 ID:6bMfB0bxa.net]
>>942
返す関数は定義出来るだろ
確保した領域の生存が関数内のみかそうじゃないかで結果は変わるが

>>941
思ってるものを描いてみ?

961 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 12:54:26.08 ID:VH0Lg5Zw0.net]
まあ関数イテレータ的には使えるのか

int getNoTest1(int x, int y, int z){return x*100+y*10+z;}
int getNoTest2(int x, int y, int z){return x*200-y*20-z;}
int getNoTest3(int x, int y, int z){return x*1000-y*100+z;}
typedef int(*FuncType)(int, int, int);

FuncType *getFuncAddrArray(void){
 static FuncType fa[3];
 fa[0] = getNoTest1;
 fa[1] = getNoTest2;
 fa[2] = getNoTest3;
 return fa;
}

int main(int argc, char *argv[]){
 FuncType *funcAddr = getFuncAddrArray();
 for (int i = 0; i < 3; ++i){
  printf("%d\n", funcAddr[i](rand(), rand(), rand()));
 }
 return 0;
}



962 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 15:36:06.25 ID:tmqxSKGS0.net]
>>945
できねーよ
配列が第一級オブジェクトじゃない珍しい言語

963 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 16:49:38.00 ID:URVWGre6d.net]
void(*func(void)[2])(void);
できるとしたら、こうなるが

964 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 17:05:11.56 ID:0DsOmzGV0.net]
固定長配列を戻すなら struct を経由したくなるわ

965 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 17:05:36.17 ID:F5Lcb5Ke0.net]
const char *f() {return "関数のポインタの配列";}

966 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 17:32:34.93 ID:eX0Ff8H70.net]
一休さんは、やめよう

967 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 17:34:43.38 ID:0DsOmzGV0.net]
https://ideone.com/DiokCM
strust ひっぺがして 戻り値が配列となる宣言だとおこられた
FUNC_PTR_T getFuncs(void)[3];

968 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 18:26:36.88 ID:+xP92Jxa0.net]
>>949
てか struct で包めば配列も返せるよね

969 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 18:41:08.47 ID:sEpxtj4KM.net]
関数へのポインタの配列の構造体?

970 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 00:19:48.06 ID:8jh3A4jF0.net]
>>944
近藤嘉雪 パーサ担当
森 公一郎 コードジェネレーター担当

近藤さんの本は20年くらい前本屋でよく見かけたな

971 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 01:28:35.56 ID:1kPfWYrSM.net]
配列も値型だったら一貫性が有っただろうな
でも、配列を丸ごとコピーするなんて普通しないから、利便性を優先したんだろう
それによって、ポインタと配列は似てるけど違いもあるみたいな、初学者泣かせな仕様が生まれてしまった



972 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 03:19:13.84 ID:lusjSahA0.net]
ベースアドレスが配列の初めの要素を指すCスタイルの配列には一貫性があるだろ、だから0-based indexを採用する蓋然性があるわけで

何らかのbookkeeping、サイズ、ストライドやランク情報等のメタデータをスカラで一緒に渡す明示的なもの、あるいはstructで包む、メンバに.flagを設けるのはdope arrayの再発明

一方、dope arrayをネイティブ採用する為には
ベースアドレス+0は配列要素ではなく、メタデータを指さねばならない
だから初めの配列要素はベースアドレス+1(いわゆる1-based index)であるべき、という蓋然性がある

最も邪悪な配列の設計はメタデータを持つにも関わらずC慣習にすり寄って来て0ベース採用のやつな、設計に何の一貫性も無い

アドレス計算はCスタイルの方がスッキリして好き、個人的にはだけど

973 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 03:42:16.62 ID:lusjSahA0.net]
array[0]がarrayの始めの要素を指す、という伝統を尊重しつつ整合的にメタデータを持たせる拡張をしたいなら、arrptr-1に持たせるって手もあるね

974 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 05:21:18.30 ID:nX/ozHbV0.net]
文字列はchar型の配列だし
文字列のコピーなんか、あらゆる言語で基本中の基本だ

975 名前:デフォルトの名無しさん (ワッチョイ 9d10-dxp0) mailto:sage [2022/12/27(火) 08:19:53.31 ID:yfz0bOFn0.net]
処理コスト軽減の為に配列自体ではなく配列の先頭ポインタでやり取りしましょう。

976 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 11:14:55.49 ID:FjfQte1M0.net]
配列が固定長なのは仕方がないと言うか、当然かなと思うが
文字列は、編集がもっと自在に出来た方がありがたかったな

977 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 11:19:00.19 ID:8jh3A4jF0.net]
>>960
同じことだぞ
式の中では配列はポインタそのものだ

978 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 11:32:56.50 ID:pT1qhH4d0.net]
sizeof演算子「いや俺区別してるし」

979 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 11:34:00.98 ID:2fUOYjFgd.net]
&演算子: いい加減なこと言ってもらっちゃ困るな

980 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 11:36:45.19 ID:2fUOYjFgd.net]
昔、こんなバカいたよ
printf("%d", sizeof "abc");
見ろ、文字列はポインタだ(キリッ

981 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 11:49:59.77 ID:8jh3A4jF0.net]
式の中の配列と書いたのが読めないバカが多すぎる



982 名前:デフォルトの名無しさん (アウアウウー Sa2f-aXTt) mailto:sage [2022/12/27(火) 12:20:51.00 ID:3AXDXHupa.net]
式がどういう意味かわかった上で他人をバカ扱いしてる?

983 名前:デフォルトの名無しさん (ワッチョイ 9769-jXNG) mailto:sage [2022/12/27(火) 12:21:02.33 ID:o7XCQITF0.net]
965なんかもあくまで式だよ

int a[100];
int *b;
(sizeof a) + (sizeof b); ←これも式であり、式の中に配列もポインタも居る

a++ 非合法
b++ 合法
これも式

984 名前:デフォルトの名無しさん (US 0Hd7-ij7E) mailto:sage [2022/12/27(火) 17:43:59.96 ID:x3eVxeWPH.net]
あの~
誰か excel マクロで動く cc を作ってくれませんか?
うちの会社、cygwin 禁止なんです、cygwin インストーラですら実行できないんです、すごく弱っています
コンパイラが手元にないと私は無力……

985 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 18:03:44.42 ID:/tVTIbQ7a.net]
VBA使えよ
安心しろお前は自分で思ってるほどCが得意じゃないから

986 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 18:19:46.78 ID:uvaA1liZd.net]
visual studioの稟議を上げられない社畜?

987 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 18:22:29.22 ID:FjfQte1M0.net]
C#のコンパイラなら、何もせずともWinのどっかにはいっているような気がした

988 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 19:41:50.61 ID:tBCD9SD30.net]
>>971
仕事に関係のない VS なんて認可されませんよ、べつにソフトウェアの人じゃないんだから

>>970
コンパイラが手元にないと、どうもやる気がでなくって…

989 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 19:42:45.86 ID:tBCD9SD30.net]
>>972
cs.exe なんて大っ嫌い

990 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 20:26:44.18 ID:pT1qhH4d0.net]
>仕事に関係のない VS なんて認可されませんよ

>誰か excel マクロで動く cc を作ってくれませんか?
仮に誰か作ってもインストール認可されないんじゃないの?
そういう環境だと読み取ったけど

991 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 20:30:03.68 ID:NnGcg72Bd.net]
>>973
勤務中にくだらねえことやってんじゃねえって上司に怒られるの?



992 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 20:31:33.55 ID:usWDFVvc0.net]
まあ仕事に関係ないって自分で言っちゃってるからなぁ

993 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 20:39:00.00 ID:FjfQte1M0.net]
じゃあ、無敵のシェルスクリプトだだだ・・・

994 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 22:26:37.16 ID:tBCD9SD30.net]
>>975
>仮に誰か作ってもインストール認可されないんじゃないの?
>そういう環境だと読み取ったけど
マクロはインストールするものじゃないから自由に使えるんですよ、インストール権限の必要なソフトはインストールできないってだけでして

>>976
そうはいっても、単一ディレクトリの全ファイルに対して、ファイル名の冒頭に連番を振るプログラムを 3 時間ほどでチョロっと書いて、業務に生かしているんですけどね
いちいち手作業でファイル名を変えるとかやってらんないでしょ?自分のために自分で書く分くらいは許容してほしいよね

995 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 22:29:39.01 ID:tBCD9SD30.net]
あと、巨大な csv ファイルを結合するプログラムも便利に使っていたんですけどね、大概の機械はデータを csv で吐いてくれますますからねえ

996 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 22:31:04.10 ID:usWDFVvc0.net]
>>979
屁理屈なら上司に言って怒られてこい
なぜまともなソフトがインストール不可なのにお前の作ったソフトなら大丈夫と思うんだ

997 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 22:35:10.73 ID:usWDFVvc0.net]
ファイル名の頭に連番打つとかPowerShellでもバッチでもVBAでもできるしそもそも打つ必要があるかどうかさえ怪しい

お前のやってることが本当にみんなにとっていいことなら業務効率化のためにコンパイラの申請を通すのは何も難しくない
拒否られてるところで気づけよマジで
職場に不和の種をまくんじゃねえ

998 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 22:35:56.95 ID:FjfQte1M0.net]
こう言うわがままは却下されて当然ではないか

999 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 22:43:18.14 ID:tBCD9SD30.net]
>>976
操作記録をいちいち記録されて、裏でこっそり査定に響く仕組みですよ、たぶん
ああ、こんなところでここまで書いちまったらもう私の給料は来年は半額になっちまいますねえ、当の昔に諦めてるけど

1000 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 22:58:37.89 ID:VvvSD8wK0.net]
>>982
power-shell はたぶん入っていないと思いますよ、あったら使うに決まってますもん
VBA はいちいち excel を起動してマクロを走らせて、ああ、もうめんどくさくって死にそう
実行ファイルワンクリックで、ピシッと全ファイルを改名したいだけですよ、そうすればさくさく錯綜するメールスレッドを管理できますからね
バッチファイルで改名?できるというのなら見せてくださいな?

>>981
業務効率改善のため自分のために自分で作り自分が使うだけのソフトと、多数の人が使う商用の売り物のソフトとを一緒にしないでくれる?

1001 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 23:03:13.50 ID:VvvSD8wK0.net]
>>983
そりゃ、業務そっちのけで得体の知れないプログラムを書いてばかり(星新一の短編にそんなのがありましたね…)だったら叱られますけど、ぱっぱと3時間で書いて後はノーメンテ、それで半年実用になっているんだから遊んでいるわけじゃないんですけど



1002 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 23:06:57.48 ID:VvvSD8wK0.net]
>>982
>業務効率化のためにコンパイラの申請を通すのは何も難しくない

難しいんですよ…
あらかじめ効用をきちんと提示しなければならないなんてめんどくさくってやってらんない、
作りたいソフトが具体的に念頭にあるわけではなく、将来的に使いたい可能性が発生する可能性があります、で稟議を通るわけがないでしょう?

1003 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 23:25:57.12 ID:FjfQte1M0.net]
マ板で相談してみたら?
ここは大分場違いになってきてる

1004 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 23:34:33.01 ID:nX/ozHbV0.net]
ブログにでも書けばいいのでは

1005 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 00:05:29.63 ID:JeA8YDJe0.net]
>>988
(職業)マじゃないただの一般人なので、マ板はたぶん板違い

>>989
ブログみたいな上等な場所に書くことではなく、便所のチラ裏で愚痴るに相応しい話題だと私は思いますけどね

まあ、もうやめます

1006 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 01:06:31.58 ID:PyoNDBFu0.net]
別に職業プログラマでなくても良いんだよ

プログラム(ロジック)についての悩みならここで良いが
プルグラムを書こうとする人の悩みは、マ板の方が相応しい

1007 名前:デフォルトの名無しさん (テテンテンテン MM97-t1KK) mailto:sage [2022/12/28(水) 03:37:42.61 ID:+f6n+5TtM.net]
> バッチファイルで改名?
これが出来なきゃ何のためにバッチファイルが存在してんだよw
バッチやシェルスクリプトは、ファイルのコピーやリネームとか、ファイル関連の処理が簡単に出来る事が最大のメリットだ
兎に角グクれば山ほど出てくる

1008 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 05:55:41.03 ID:VGHawTJO0.net]
C

1009 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 05:56:03.28 ID:VGHawTJO0.net]


1010 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 05:56:54.31 ID:VGHawTJO0.net]


1011 名前:デフォルトの名無しさん [2022/12/28(水) 05:57:50.13 ID:DPVYYyHtM.net]
C



1012 名前:デフォルトの名無しさん [2022/12/28(水) 05:58:53.46 ID:DPVYYyHtM.net]


1013 名前:デフォルトの名無しさん [2022/12/28(水) 05:59:41.77 ID:DPVYYyHtM.net]


1014 名前:デフォルトの名無しさん [2022/12/28(水) 06:00:17.27 ID:DPVYYyHtM.net]


1015 名前:デフォルトの名無しさん [2022/12/28(水) 06:00:51.24 ID:DPVYYyHtM.net]


1016 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 145日 6時間 28分 24秒

1017 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<263KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef