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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(1): (ワッチョイ 2389-FUJr) 2023/10/30(月)17:13 ID:hHEGE8Ol0(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
2: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9b3e-g5YV) 2023/10/30(月)17:30 ID:I7fISnX+0(1/2) AAS
2get
3: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9b3e-g5YV) 2023/10/30(月)17:31 ID:I7fISnX+0(2/2) AAS
C23 の最新ドラフトは N3096 に更新されてるでよ
外部リンク[pdf]:www.open-std.org
4: (ワッチョイ eb63-c8RC) 2023/10/30(月)19:05 ID:i+814vap0(1) AAS
>>1

乙です
5: (ワッチョイ 199f-CP9B) 2023/10/30(月)19:40 ID:PfgrnUqg0(1) AAS
いまどきPlain Cが使われる状況なんて限定的なんだから
高級アセンブラとして堂々としてればいいんですよ
6: (ワントンキン MM53-g3nS) 2023/10/30(月)20:35 ID:YnJZjusKM(1) AAS
トッピングは何になさいますか?
7: (ワッチョイ 2901-CP9B) 2023/10/30(月)21:04 ID:re6vYA8I0(1) AAS
リモートワーク制度が削減・廃止されたら「転職や別案件を探す」が4割--
「Offers」登録者調査

ITエンジニア/デザイナーの副業・転職サービス「Offers」を提供するoverflowは、
同社が運営する「Offersデジタル人材総研」にて「リモートワーク実態調査2023」
を公表した。
これによると、リモートワークになり、5人に1人が引っ越したと回答した。そのうち、
現職でリモートワーク制度が削減・廃止された場合、「転職や別案件を探す」という
回答が44.0%にものぼった。一方「会社と交渉する」という回答は40.0%、
「引っ越さず受け入れる」が12.0%となった。
さらにリモートワークを希望している理由として「通勤時間が無駄だと感じている」が
省2
8
(3): (ワッチョイ 194e-FUJr) 2023/10/31(火)09:59 ID:DBRUqQAF0(1/5) AAS
前スレではちみつさんが書いてくれたリンク見ました。thx
外部リンク:go.dev

曰くGOの defer は
deferred function calls 遅延関数呼び出し で、関数脱出時にlast-in-fast 順で呼ぶもの

とすると、C言語でdeferの仕様追加要求は却下すべきです。リンクリスト1個作れば済む話で、実際そうしてる人も多数いるだろうに、既存プログラムでdeferというシンボルを使ってるのをコンパイル通らなくしてまで仕様追加するのは利益が小さすぎる。

エラー処理で使うかは、直接関係ないですね。そうしたきゃすればいいけど、私は読みやすいコードとは思わない、です
9
(1): (ワッチョイ 937c-cQ99) 2023/10/31(火)12:23 ID:9gnUDJNP0(1/4) AAS
>>8
>関数脱出時にlast-in-fast 順で呼ぶもの

>とすると、C言語でdeferの仕様追加要求は却下すべきです。

この「とすると」からの繋がりが意味不明。

>リンクリスト1個作れば済む話で、

だから何?
「却下 *すべき*」の理由になってない。
採用するほどでない、なら理解できる。

> 既存プログラムでdeferというシンボルを使ってるのをコンパイル通らなくしてまで仕様追加するのは利益が小さすぎる。
省1
10
(1): (ワッチョイ 194e-FUJr) 2023/10/31(火)15:34 ID:DBRUqQAF0(2/5) AAS
>>9
話が通じてないと思います
C言語の建設的な議論なら応じたいけど
11: (ワッチョイ eb63-c8RC) 2023/10/31(火)15:38 ID:/TBQ8etM0(1) AAS
ブログ立てて、そこでやれ
12: (ワッチョイ 29d7-WJPr) 2023/10/31(火)15:39 ID:803Tgyvr0(1) AAS
>>8
どうせコンパイルオプションで無効にすれば使えるだろ
13
(1): (ワッチョイ 937c-cQ99) 2023/10/31(火)16:18 ID:9gnUDJNP0(2/4) AAS
>>10
おまえの感想 >>8 のどこが建設的な議論よ?
14: (ワッチョイ 1379-JwVi) 2023/10/31(火)16:24 ID:1/1CCAX60(1/2) AAS
ボクの考えた最強のC言語を語るスレはこちら
【超高速】C/C++に代わる低級言語を開発したい 8
2chスレ:tech
15: (ワッチョイ d95d-kYJB) 2023/10/31(火)16:36 ID:RXeEqnvz0(1) AAS
deferは(素のものをじゃなくてもう少し高機能な)プリプロセッサで対応出来る
breakやreturnの直前にdeferの内容を全部コピーしとけばいいだけ
まぁそれ言い出すと、C++をCに変換するプリプロセッサが有れば全て解決だがなw
16: (ワッチョイ 194e-FUJr) 2023/10/31(火)16:37 ID:DBRUqQAF0(3/5) AAS
ただのどこかのオッサンの意見が気に食わんなら別にそれでもいいよ…

各自自分の考えを語ればいいじゃん、そんな食いつくくらいならなんか一つくらいは「自分のアイデア」あるんでしょ?何もないの?
17
(1): (ワッチョイ 194e-FUJr) 2023/10/31(火)16:39 ID:DBRUqQAF0(4/5) AAS
>>13
既存の「正しいプログラム」が「正しいプログラムであり続ける」

そんなにおかしいことかね
18: (ワッチョイ 537c-oF/Z) 2023/10/31(火)16:43 ID:5ddE/sJo0(1/2) AAS
既に進行中の「建設的な議論」をご用意しました
以降の議論はこれを前提として積み重ねていただくようお願い申し上げます
外部リンク[htm]:www.open-std.org
19
(2): (ワッチョイ 537c-oF/Z) 2023/10/31(火)16:43 ID:5ddE/sJo0(2/2) AAS
既に進行中の「建設的な議論」をご用意しました
以降の議論はこれを前提として積み重ねていただくようお願い申し上げます
外部リンク[htm]:www.open-std.org
20: (ワッチョイ 1be7-zW/F) 2023/10/31(火)16:57 ID:C1aTagsw0(1) AAS
>>19
なんか、機能はともかく見た目はだいぶ汚いコードになるね
21
(1): (ワッチョイ 937c-cQ99) 2023/10/31(火)17:12 ID:9gnUDJNP0(3/4) AAS
>>17
全然おかしく無いよ。
互換性は非常に重要。

でもおまえは新しい機能は追加するなって言ってるだけだよね。
おまえの言い分だとプロトタイプ宣言必須になるのは、過去の「正しいプログラム」が正しくあり続けることできないから「却下すべき」案なんだよな。
22: (ワッチョイ 937c-cQ99) 2023/10/31(火)17:17 ID:9gnUDJNP0(4/4) AAS
>>21
プロトタイプ宣言とK&Rスタイルの関数定義がごっちゃになってるわ。
>>21 は回線切って首吊れば。
23
(1): (ワッチョイ 1379-JwVi) 2023/10/31(火)17:41 ID:1/1CCAX60(2/2) AAS
>>19
俺はGOで組んだことないからそこに書かれてる処理系依存のtry/finallyのが馴染みがあるしスマートに見えるわ
キモい輩って世界中に居るんだな
24: (ワッチョイ 8114-Qq8E) 2023/10/31(火)17:59 ID:iHc07kUm0(1) AAS
>>23
君は中傷せずに会話できないのかね?
25: (ワッチョイ 1945-FUJr) 2023/10/31(火)21:23 ID:DBRUqQAF0(5/5) AAS
21 と 22 のワッチョイとIDが同じで表現が口汚いのはどう解釈したらいいの?私には難しくて分かりませぬ
26: (スププ Sd33-wFsA) 2023/11/01(水)03:27 ID:3HySGS93d(1) AAS
いつもの復オジωωω
スルー決定ωωωωωωωωω
27: (ワッチョイ e110-H9h+) 2023/11/01(水)07:56 ID:9FKdtRs60(1) AAS
容認→警告→禁止推奨
となった仕様が幾つあったか・・・。
28
(1): (ワントンキン MM53-wL8D) 2023/11/01(水)09:43 ID:g4eyJzirM(1) AAS
言語の設計思想と立ち位置考えれば手を入れる必要ないでしょ
細かいのはあるにしても関数プロトタイプの導入、データ型の追加、stdioのセキュリティ強化くらいでCとしては充分
構文追加とかバカすぎてANSI Cもまず取り込まんよw
29: (スプッッ Sd73-cQ99) 2023/11/01(水)12:36 ID:YeBzjhT2d(1) AAS
>>28
>細かいのはあるにしても関数プロトタイプの導入、データ型の追加、stdioのセキュリティ強化くらいでCとしては充分

その挙げ句MISRA-Cみたいなのがでてくる。

>構文追加とかバカすぎてANSI Cもまず取り込まんよw

C23の属性とか知らんの?
30
(1): (ワッチョイ 2945-kYJB) 2023/11/01(水)13:21 ID:DFYs67SD0(1/4) AAS
c23だと属性以外にも
enum Colour : char {
Red,
Green,
Blue
};
とか
auto i = 123L;
とかも構文変更になる
constexprもコンパイラにとってはかなり大きい
省1
31: (ワッチョイ 2945-kYJB) 2023/11/01(水)13:30 ID:DFYs67SD0(2/4) AAS
clangとかはconstexprを使わなくても、最適化で勝手に整数に置き換わってるとか普通に有るけどねw
constexprはそれを確実に保証出来るので、精神衛生上良い
32
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 933e-g5YV) 2023/11/01(水)15:17 ID:m2/+vlXa0(1/2) AAS
>>30
C23 の constexpr は関数には付けられない。
高度なコンパイル時計算をするものではない。
33: (ワッチョイ 2945-kYJB) 2023/11/01(水)17:07 ID:DFYs67SD0(3/4) AAS
>>32
なるほど!ちょっと中途半端な状態なんだな…
34: はちみつ餃子◆8X2XSCHEME (ワッチョイ 933e-g5YV) 2023/11/01(水)17:37 ID:m2/+vlXa0(2/2) AAS
C++ の const 指定は初期化子が定数 (定数式) なら指定が付けられた変数も定数になるという規則なんだが
C の const は単に書き換えが禁止されるだけで定数になることはない。
(処理系の拡張によって一部の状況で定数扱いされることはある。)

C で定数を作ろうとすると #define を使うか enum を使うかしかなかったので
定数を定義するための直接的な方法として constexpr を導入しようという判断は納得できる。

定数を定義するまともな方法がないってのは C の明らかな欠陥なので
それを改善するという話でしかなくて、
コンパイル時計算を推進する野心の始まりってわけではないと思う。
なので constexpr については (遠い将来はともかく現時点では) これで完了。
中途半端ってこたぁないというのが私の感覚だな。
35: (ワッチョイ 2985-g3nS) 2023/11/01(水)21:28 ID:3Yx3b9sx0(1) AAS
気に入らないって理由なの?
36: (ワッチョイ 2945-kYJB) 2023/11/01(水)23:56 ID:DFYs67SD0(4/4) AAS
書き換えが禁止されても定数ではないとはこれいかに…
ここでいう定数はコードに直接埋め込まれる値ということだろう
ただ、C++もstatic constにしないと定数にならないと思ったけど、 constだけだとちゃんとメモリが確保されてると認識してたな
37: はちみつ餃子◆8X2XSCHEME (ワッチョイ 933e-g5YV) 2023/11/02(木)01:38 ID:9IBKBW6G0(1) AAS
言語仕様上の用語としては定数は定数が要求される箇所に書くことが出来るもののことだよ。
単純な例で言えば、↓これは C++ ではアリだが C ではダメ。 (clang のデフォルトだと通してしまったりもするようだが……。)

const int foo = 1;

enum bar {baz = foo};

int main(void){}

もちろん最適化によって効率的な扱いがされやすくなることも多いにせよ、直接には求められてない。
定数であってもアドレス演算子は適用が可能だし、あくまでも変数なので見かけ上はメモリ上にある。
省3
38: (アウアウウー Sad5-g+2W) 2023/11/02(木)09:19 ID:kxWwWLf8a(1) AAS
const int foo = 1;

char hoge[foo];

int main(void){}
39: (スフッ Sd33-IqBQ) 2023/11/02(木)10:39 ID:9MQ+Mdatd(1) AAS
2-pass コンパイルを実装してほしい

struct Fuga;
struct Hoge {
 struct Fuga *fuga;
};
struct Fuga {
 ...

こんなのとはおさらばしたい
40
(2): (ワッチョイ eb63-c8RC) 2023/11/02(木)10:41 ID:VWEHs6hL0(1) AAS
そういう配列宣言でdefine使わないとどういうメリットがあるの?
41
(1): (スプッッ Sd73-cQ99) 2023/11/02(木)12:23 ID:R1/lC5p9d(1) AAS
>>40
デバッグ時にシンボル表示できる。
42
(1): (ワッチョイ 190d-FUJr) 2023/11/02(木)15:51 ID:7f41Qrwa0(1) AAS
もしかしてそれって、C言語の仕様じゃなくてデバッガとかビルドシステム側の機能改善でできそうって気がしませんか?

デバッガが読んで参考にできるかもしれない情報の豊富さの、なんとなくの並び

■実行形式にシンボル情報がない
■実行形式にシンボル情報がある
■ソースコードがあるけどデバッガはビルド情報知らない
■ソースコードがありデバッガがビルドの情報も知ってる

clang とかLLVM界隈ってそういう情報(どういう?ビルド時しか分からん情報というか?)をうまく使おうぜ方向を目指してる気がします、知らんけど
43
(2): (ワッチョイ 29d7-WJPr) 2023/11/03(金)00:15 ID:M0kCm9U+0(1/3) AAS
その例だとデバッグ時に数字で表示されたほうが安全じゃないか
44: (アウアウウー Sad5-g+2W) 2023/11/03(金)08:01 ID:rVBPlXQLa(1) AAS
>ソースコードがありデバッガがビルドの情報も知ってる

両方持ってるのは本物のプロと練習集の初心者素人と両極端に分かれそう
45: (ワッチョイ 29d7-WJPr) 2023/11/03(金)09:53 ID:M0kCm9U+0(2/3) AAS
何言いたいんだか全くわからんが
46: (ワッチョイ eb63-c8RC) 2023/11/03(金)10:12 ID:R1GL3fqM0(1) AAS
生涯修行僧
47: (ワッチョイ 5324-zW/F) 2023/11/03(金)11:32 ID:8bACdtpR0(1/2) AAS
>>42
当然だけど規格の話じゃないよ
気がしませんかっていうかコンパイラとデバッガは何十年も前からそうやって連携してる
48: (ワッチョイ 5324-zW/F) 2023/11/03(金)11:34 ID:8bACdtpR0(2/2) AAS
>>43
数字で表示されないと具体的に何が非安全だと心配してるの?
49
(2): (ワッチョイ 29d7-WJPr) 2023/11/03(金)21:59 ID:M0kCm9U+0(3/3) AAS
次に実行するコード
>hoge[2] = 0;
となった時に
char hoge[foo];
と表示されてると次にfooの値を探すので二度手間
char hoge[1];
と表示されてれば一度ですむ
50: (ワッチョイ 827c-RmzB) 2023/11/04(土)00:06 ID:nDDUhOSB0(1/4) AAS
>>49
何のためにシンボル使うのかわかってないな。
実際の値と値の持つ意味について考えたほうがいいぞ。
51
(1): (ワッチョイ 6dd7-HQPe) 2023/11/04(土)00:27 ID:uAZ656n/0(1/2) AAS
哲学には興味ない
なんのためにデバッガ使うかわかっているので充分だ
52
(1): (ワッチョイ 827c-RmzB) 2023/11/04(土)02:19 ID:nDDUhOSB0(2/4) AAS
>>51
なんだ実際のデバッガ使ったことないのか。
普通はシンボルだけじゃなくて値も表示するんだが。
1-
あと 950 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.241s*