!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.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言語なら俺に聞け 156
https://mevius.5ch.net/test/read.cgi/tech/1601271690/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
C言語なら俺に聞け 157
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0345-kMi9)
2021/06/28(月) 11:22:51.50ID:so+vl3vs026デフォルトの名無しさん (ワッチョイ cfbb-lfrx)
2021/06/30(水) 01:02:59.78ID:xHlidKVh0 みなさんレスありがとう
「C BNF」でググって一番上に出るBNFを参考に実装しているんだけど、BNFが古いせいかtypedefの構文が欠落してるような気がして(気のせいでした。↓のレス参照)
でも<typedef-name>という要素はあるからtypedef機能自体はあるらしい
BNFに書いてないってことは構文解析以前の処理になるのかもしれないと思ってここで聞いてみたんだけど
混乱した人もいるみたいですまない
>>25
あー!そういうことですか
なるほど疑問が解けました
typedefをspecifierで扱ってるわけですね
ありがとうございます
「C BNF」でググって一番上に出るBNFを参考に実装しているんだけど、BNFが古いせいかtypedefの構文が欠落してるような気がして(気のせいでした。↓のレス参照)
でも<typedef-name>という要素はあるからtypedef機能自体はあるらしい
BNFに書いてないってことは構文解析以前の処理になるのかもしれないと思ってここで聞いてみたんだけど
混乱した人もいるみたいですまない
>>25
あー!そういうことですか
なるほど疑問が解けました
typedefをspecifierで扱ってるわけですね
ありがとうございます
27デフォルトの名無しさん (ワッチョイ 0f45-Sffs)
2021/06/30(水) 06:48:58.92ID:tpFz8l2w028デフォルトの名無しさん (ワッチョイ cfbb-lfrx)
2021/06/30(水) 09:43:56.46ID:xHlidKVh029デフォルトの名無しさん (ワッチョイ b6da-xL6t)
2021/07/17(土) 09:12:05.75ID:17h8nqYk0 リスト型構造体配列って他の言語でもあるのでしょうか?
現在職業訓練で勉強中なのですが、独学でやらないといけない範囲のようでして、
時間的余裕があまりない状態です。
他言語でも似たような考えが出てきて、Cで覚えておくと役立つなど
ございましたら、頑張って挑戦してみようと思っています。
現在職業訓練で勉強中なのですが、独学でやらないといけない範囲のようでして、
時間的余裕があまりない状態です。
他言語でも似たような考えが出てきて、Cで覚えておくと役立つなど
ございましたら、頑張って挑戦してみようと思っています。
30デフォルトの名無しさん (ブーイモ MM0e-xXJe)
2021/07/17(土) 12:16:52.25ID:xP6i4weKM リスト型構造体配列ってのは講師の人の自作用語?
それなら定義を示してもらわんと。
それなら定義を示してもらわんと。
31デフォルトの名無しさん (ワッチョイ aabd-WluE)
2021/07/17(土) 12:38:05.00ID:+M7J9sQi0 リンクリストなら他の言語にもある
普通は配列とは言わないからその言葉は謎だけど……
普通は配列とは言わないからその言葉は謎だけど……
32デフォルトの名無しさん (ワッチョイ 9501-zSg9)
2021/07/17(土) 13:34:21.36ID:e6axNbpd0 ポインタの代わりに配列のインデックスを保持してるような感じなのかね?
リスト型構造体配列
リスト型構造体配列
33デフォルトの名無しさん (ワッチョイ c628-0cQV)
2021/07/17(土) 16:17:40.91ID:USprSk230 C99かそれ以降の標準的な環境において
(bool)someval
と
!!someval
って(例外なしに)全くおなじ効果を生むと思っていいですか。
前者はJISX3010の6.3.1.2などで「値が0になるなら0,それ以外なら1」と書かれている一方,
後者は(初学者なので経験がなく,正しい認識ではないかもしれませんが)慣用的な書き方なので
規格票にも書かれておらず,正確に同じ意味なのかどうかを確かめられませんでした。
(bool)someval
と
!!someval
って(例外なしに)全くおなじ効果を生むと思っていいですか。
前者はJISX3010の6.3.1.2などで「値が0になるなら0,それ以外なら1」と書かれている一方,
後者は(初学者なので経験がなく,正しい認識ではないかもしれませんが)慣用的な書き方なので
規格票にも書かれておらず,正確に同じ意味なのかどうかを確かめられませんでした。
34デフォルトの名無しさん (ワッチョイ 95da-cm0L)
2021/07/18(日) 00:36:46.74ID:vIcCvIPT0 >>33
「意味するところは全く違うが、結果だけ見れば全く同じ」です。
「意味するところは全く違うが、結果だけ見れば全く同じ」です。
35デフォルトの名無しさん (アウアウウー Sa39-rGUB)
2021/07/18(日) 01:19:32.77ID:euqgtMPHa bool型が導入されたことで得られるメリットはは何かあるでしょうか
またデメリットはあるでしょうか
またデメリットはあるでしょうか
36デフォルトの名無しさん (ラクッペペ MM0e-cm0L)
2021/07/18(日) 07:53:07.50ID:OEfNT0QGM メリットは、必ず真偽値になること
デメリットは、必ず真偽値になってしまうこと
例えばエラーコードのようにいい加減な経緯で拡張していくことはできない
デメリットは、必ず真偽値になってしまうこと
例えばエラーコードのようにいい加減な経緯で拡張していくことはできない
37ハノン ◆QZaw55cn4c (ワッチョイ aee9-6rOL)
2021/07/18(日) 09:54:45.66ID:9YAoR/6C0 >>35
ctypes.h の isalpha() とか islower() とかその他大勢は、偽のときは 0 を必ず返しますが、真のときは 1 とは限らない 0 でない別の数を返したりするんですよ
そういうのは紛らわしいので、そういう紛らわしさが減る bool の存在はありがたいですね
ctypes.h の isalpha() とか islower() とかその他大勢は、偽のときは 0 を必ず返しますが、真のときは 1 とは限らない 0 でない別の数を返したりするんですよ
そういうのは紛らわしいので、そういう紛らわしさが減る bool の存在はありがたいですね
38デフォルトの名無しさん (エムゾネ FFfa-E0YB)
2021/07/18(日) 16:58:13.77ID:jPlpwmsoF 関数の () は演算子
キャストの () は演算子
だそうですが
数学の数式で優先度上げるのに相当する () は演算子ですか?
キャストの () は演算子
だそうですが
数学の数式で優先度上げるのに相当する () は演算子ですか?
39デフォルトの名無しさん (ワッチョイ 5a7f-xL6t)
2021/07/18(日) 17:14:40.88ID:6AMrYKMS0 いいえ
40デフォルトの名無しさん (アウアウキー Sa4d-vUbb)
2021/07/18(日) 20:03:28.13ID:i83/r50ia >>34
ありがとうございます!
ありがとうございます!
42はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-xL6t)
2021/07/18(日) 21:49:36.58ID:+Ch+KzUq0 >>33
真偽値型にキャストした結果の型は _Bool で、 !! を通した型は int という違いはある。
https://wandbox.org/permlink/zlxhRTGr5Sj8IsiH
整数を扱う多くの場合では整数拡張が入ったりして違いが吸収
されてしまうからどちらでもいい場合がほとんどだと思うけど、
あらゆる状況で完全に同じとは言い切れない。
ちなみに C++ では整数に ! を適用した結果は bool なので、
もちろん !! の結果も bool になる。
真偽値型にキャストした結果の型は _Bool で、 !! を通した型は int という違いはある。
https://wandbox.org/permlink/zlxhRTGr5Sj8IsiH
整数を扱う多くの場合では整数拡張が入ったりして違いが吸収
されてしまうからどちらでもいい場合がほとんどだと思うけど、
あらゆる状況で完全に同じとは言い切れない。
ちなみに C++ では整数に ! を適用した結果は bool なので、
もちろん !! の結果も bool になる。
43デフォルトの名無しさん (ワッチョイ 4545-zSg9)
2021/07/18(日) 21:52:36.39ID:V2Gw1I3v044デフォルトの名無しさん (ワッチョイ c628-Tv+1)
2021/07/18(日) 22:42:35.27ID:4j3GDjyk0 >>42
_Generic 便利ですね……。C11から追加されたんだ。
_Generic 便利ですね……。C11から追加されたんだ。
45デフォルトの名無しさん (ワッチョイ c628-Tv+1)
2021/07/18(日) 22:44:22.95ID:4j3GDjyk0 >>38
ほとんど関係ないけど,Haskelだと優先度を上げる()記法を
$演算子で代用できるから,
「優先度を上げる()を演算子としてみる」というのはそう不自然ではないかも。
でも(たぶん)C言語だとそういうことはない。
ほとんど関係ないけど,Haskelだと優先度を上げる()記法を
$演算子で代用できるから,
「優先度を上げる()を演算子としてみる」というのはそう不自然ではないかも。
でも(たぶん)C言語だとそういうことはない。
46デフォルトの名無しさん (エムゾネ FFfa-iTam)
2021/07/19(月) 17:37:03.07ID:3YhpibAgF こういう認定試験用にC言語勉強するときって
https://www.sikaku.gr.jp/js/cpjv/
32bit版のコンパイラの方が良いんでしょうか?
64bit版でintとかsize_tとかサイズ変わると困りませんか?
https://www.sikaku.gr.jp/js/cpjv/
32bit版のコンパイラの方が良いんでしょうか?
64bit版でintとかsize_tとかサイズ変わると困りませんか?
47デフォルトの名無しさん (ワッチョイ 4545-zSg9)
2021/07/19(月) 17:41:05.09ID:GP2gJIPC0 逆にsizeof(size_t)が返す値が処理系定義であることを考え落とす癖がつくと
そこを弱点として狙われるぞ
そこを弱点として狙われるぞ
48はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-xL6t)
2021/07/20(火) 15:47:40.82ID:BjsPOMc70 変わって困ることならむしろ困ってみたほうが勉強になるんじゃね。
49デフォルトの名無しさん (エムゾネ FFfa-E0YB)
2021/07/20(火) 17:03:23.21ID:2ecX9oPqF > 1級で使用する環境について(公開試験)
コンパイラ Borland C++ Compiler 5.5
JIS X 3010-1993に対応
エディタ TeraPadまたはメモ帳
文字コード:SHIFT-JIS、改行コード:CR+LF
※当コンパイラの操作にはコマンドプロンプトの知識が必要です。
※解答用のソースプログラムは、SHIFT-JISで保存してください。
※指定した保存形式で保存されていない場合は、採点の対象となりません。
・・・なんだかなぁ
コンパイラ Borland C++ Compiler 5.5
JIS X 3010-1993に対応
エディタ TeraPadまたはメモ帳
文字コード:SHIFT-JIS、改行コード:CR+LF
※当コンパイラの操作にはコマンドプロンプトの知識が必要です。
※解答用のソースプログラムは、SHIFT-JISで保存してください。
※指定した保存形式で保存されていない場合は、採点の対象となりません。
・・・なんだかなぁ
50デフォルトの名無しさん (ガラプー KK7e-/Rtw)
2021/07/20(火) 18:27:33.17ID:rDNdpvsmK せめてC99対応コンパイラにしようよ
51デフォルトの名無しさん (ワッチョイ f6bb-xXJe)
2021/07/20(火) 18:37:29.47ID:LjuPHZpl0 JISX 3010 1993で使えない構文や関数を回避して回答する能力を受験者に課すなんてなかなか高度な試験だね
52デフォルトの名無しさん (ドコグロ MM0e-WluE)
2021/07/20(火) 20:03:33.02ID:Plw9uEZeM BCCってまだVSの無料版が無かった頃に無料で使えるコンパイラとして粂井氏のHPで紹介されてて使ってたなあ
その時代から何も進化してない資格なんだろうな……
その時代から何も進化してない資格なんだろうな……
53デフォルトの名無しさん (アウアウウー Sa39-rGUB)
2021/07/21(水) 00:20:28.07ID:fGno+40ia bccとかLSI-C(試食版)とか、Cマガの付録で
54デフォルトの名無しさん (ワッチョイ 95da-cm0L)
2021/07/21(水) 07:39:41.26ID:A0/pIuIc0 BCCは知ってても それだけじゃ困ります
55デフォルトの名無しさん (ワッチョイ 4545-zSg9)
2021/07/21(水) 09:12:39.48ID:+0/niNvm0 > JIS X 3010-1993に対応
つーことは
int main(void)
{
printf("");
int x; /* これがダメ */
//このコメントもダメ
for(int y = 0; y < 1; y++) ; //これもダメ
}
今どきのコンパイラはみんなOKなのに
うっかり使うと減点されるという陰険な罠だな
つーことは
int main(void)
{
printf("");
int x; /* これがダメ */
//このコメントもダメ
for(int y = 0; y < 1; y++) ; //これもダメ
}
今どきのコンパイラはみんなOKなのに
うっかり使うと減点されるという陰険な罠だな
56デフォルトの名無しさん (ワッチョイ 615f-E0YB)
2021/07/21(水) 09:45:21.46ID:DbniEar00 検定する側が時代遅れで
しかもこんなレベルじゃ
最早コボちゃん世代を嗤えませんね?
しかもこんなレベルじゃ
最早コボちゃん世代を嗤えませんね?
57はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-xL6t)
2021/07/21(水) 10:08:36.90ID:tIqEOSex0 まあそういう時代もあったというのは知識として有るに越したことは無いが、
前提とされるとだいぶんしんどいな。
前提とされるとだいぶんしんどいな。
58デフォルトの名無しさん (ワッチョイ 55f0-BuM5)
2021/07/21(水) 11:16:37.45ID:CAhJ9aCx0 じじい度検定になっとる
59デフォルトの名無しさん (ワッチョイ 9501-zSg9)
2021/07/21(水) 20:55:54.33ID:NQ6A/S1F0 Cの範囲内なのにえらいストレスフルやな
//コメントや for 内の変数宣言が禁じられると辛い
//コメントや for 内の変数宣言が禁じられると辛い
60デフォルトの名無しさん (テテンテンテン MM0e-+scu)
2021/07/21(水) 21:11:33.77ID:kmyfY3M8M だんだんいじくり回されてワケわからん言語になるんだろうな
61はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-xL6t)
2021/07/21(水) 22:43:38.51ID:tIqEOSex062デフォルトの名無しさん (ワッチョイ c628-Tv+1)
2021/07/22(木) 00:04:04.57ID:0pHC70l40 今日,O'rellyの『Lex & Yacc』で「自己参照型構造体」という概念を知ったんだけど,
これが動作する理屈とかこういう書き方をする利点がマジでわからなくて苦戦してる。
でもこれを理解できるようになればメモリ確保やポインタ参照の話がわかるようになる……
と期待してがんばる。
これが動作する理屈とかこういう書き方をする利点がマジでわからなくて苦戦してる。
でもこれを理解できるようになればメモリ確保やポインタ参照の話がわかるようになる……
と期待してがんばる。
63はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-xL6t)
2021/07/22(木) 00:13:03.51ID:r7I3CYuM0 基本的なメモリ管理をわからない段階で yacc の本を読んでるのか。
実用を通して理解するのもひとつの道ではあるだろうけど、
最初はもっと単純な事例集みたいなのを見るほうがいいと思う。
実用を通して理解するのもひとつの道ではあるだろうけど、
最初はもっと単純な事例集みたいなのを見るほうがいいと思う。
64蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdfa-rTLR)
2021/07/22(木) 00:14:52.69ID:24/oAOWdd65デフォルトの名無しさん (ワッチョイ da01-+scu)
2021/07/22(木) 09:38:36.05ID:ERrrf0sq0 自分が興味あることから掘り下げて行くのはいいと思うよ
とりあえず C言語 リスト構造 とかでググってみて
とりあえず C言語 リスト構造 とかでググってみて
66デフォルトの名無しさん (エムゾネ FFfa-E0YB)
2021/07/22(木) 10:14:39.29ID:I7nexIleF struct A { A a; }; ではないからな
struct A { A *p; }; ならただのポインタ
struct A { A *p; }; ならただのポインタ
67デフォルトの名無しさん (ワッチョイ 552c-Rh1M)
2021/07/22(木) 10:53:20.02ID:kFdJ5CFB0 Ruby は、Bison, flex だったか?
68デフォルトの名無しさん (ワッチョイ c628-Tv+1)
2021/07/22(木) 12:38:58.69ID:0pHC70l40 >>63
「勉強不足」といわれればそれはその通りなんだけど
寧ろC言語のやっかいな部分にできるだけ触らないですむように
という動機でlexとyaccを学んでるんですよね……。
↑まあこういう考え方が間違ってるかもということに
『Lex & Yacc』を読んでいて気付きはじめていますが……
>>65
こういう↓ことですよね。
https://dev.grapecity.co.jp/support/powernews/column/clang/031/page02.htm
実は『Lex & Yacc』内ではそのコード概念の名前はでてこなくて
コード断片でggったりしてました。
「勉強不足」といわれればそれはその通りなんだけど
寧ろC言語のやっかいな部分にできるだけ触らないですむように
という動機でlexとyaccを学んでるんですよね……。
↑まあこういう考え方が間違ってるかもということに
『Lex & Yacc』を読んでいて気付きはじめていますが……
>>65
こういう↓ことですよね。
https://dev.grapecity.co.jp/support/powernews/column/clang/031/page02.htm
実は『Lex & Yacc』内ではそのコード概念の名前はでてこなくて
コード断片でggったりしてました。
69デフォルトの名無しさん (ワッチョイ 4545-zSg9)
2021/07/22(木) 12:48:57.06ID:MMqyZQ9/070デフォルトの名無しさん (エムゾネ FFfa-E0YB)
2021/07/22(木) 14:18:45.83ID:I7nexIleF 「自己参照型」っていうのが
誤訳なんじゃないかって思ってる
実際には「自己型参照型」でしかない
ポインタを代入するときに自分自身(オブジェクト)のポインタを代入する訳じゃないから
自己を参照してる訳じゃないんだ
ここを誤解するから理解が進まない
>>69 君には伝わってるから良いよ
誤訳なんじゃないかって思ってる
実際には「自己型参照型」でしかない
ポインタを代入するときに自分自身(オブジェクト)のポインタを代入する訳じゃないから
自己を参照してる訳じゃないんだ
ここを誤解するから理解が進まない
>>69 君には伝わってるから良いよ
71デフォルトの名無しさん (ワッチョイ 4545-zSg9)
2021/07/22(木) 14:34:42.13ID:MMqyZQ9/0 ISO: self-referential structure
JIS: 自己参照する構造体
誤訳かねえ
JIS: 自己参照する構造体
誤訳かねえ
72デフォルトの名無しさん (ワッチョイ 8969-R8z5)
2021/07/22(木) 14:50:14.55ID:G9vEgy1w0 int arg;
p = (*p)(arg);
戻りが関数(A)のポインタとなる 引数int を取る関数(A) の宣言もまた
記述が無理な事案ですかの
p = (*p)(arg);
戻りが関数(A)のポインタとなる 引数int を取る関数(A) の宣言もまた
記述が無理な事案ですかの
73デフォルトの名無しさん (ワッチョイ 552c-Rh1M)
2021/07/22(木) 15:29:46.76ID:kFdJ5CFB0 自己参照型は、2分木とか?
親は、2つの子のポインターを持っていて、それが再帰的に続くもので、
親子は同じ構造をしているもの
親は、2つの子のポインターを持っていて、それが再帰的に続くもので、
親子は同じ構造をしているもの
74はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-xL6t)
2021/07/22(木) 16:19:06.28ID:r7I3CYuM0 わざわざ「自己参照する構造体」という用語が与えられているのは構造体タグのスコープを
説明する文法解説上の都合じゃないかな。
ノードを直列に接続すればリストになったり複数の接続を持てば木になったりというデータ構造のことと、
他のノードへの接続には C ではポインタを使うのが自然だというふたつの事柄を併せると
結果的に自分自身 (を含む構造体) と同じ型のオブジェクトを指すポインタが現れることもあるというだけのことで、
(データ構造、また、その管理においては) 指している型が同じなのか違うのかで
ことさらに区別して考える意味はあまりないように思う。
説明する文法解説上の都合じゃないかな。
ノードを直列に接続すればリストになったり複数の接続を持てば木になったりというデータ構造のことと、
他のノードへの接続には C ではポインタを使うのが自然だというふたつの事柄を併せると
結果的に自分自身 (を含む構造体) と同じ型のオブジェクトを指すポインタが現れることもあるというだけのことで、
(データ構造、また、その管理においては) 指している型が同じなのか違うのかで
ことさらに区別して考える意味はあまりないように思う。
75デフォルトの名無しさん (ワッチョイ daad-n9Kp)
2021/07/22(木) 16:44:22.00ID:zX6Mldkk0 C言語の勉強中にリスト構造とかの部分でポインタがよくわからない!って人良く見るけど
実際のところC言語で仕事するときにリストとか二分木ってあんま使わなくね?
構造体の配列は良く見るけど
組み込み系とかだとメモリ少しでも節約するためにリストにしたりするの?
実際のところC言語で仕事するときにリストとか二分木ってあんま使わなくね?
構造体の配列は良く見るけど
組み込み系とかだとメモリ少しでも節約するためにリストにしたりするの?
76デフォルトの名無しさん (ワッチョイ 4545-zSg9)
2021/07/22(木) 16:55:22.66ID:MMqyZQ9/0 > 組み込み系とかだとメモリ少しでも節約するためにリストにしたりするの?
意味がよくわからんが
組み込みでもリストもmallocも普通に使うぞ
OSがなきゃmalloc使えんとでも思っているのか?
意味がよくわからんが
組み込みでもリストもmallocも普通に使うぞ
OSがなきゃmalloc使えんとでも思っているのか?
77デフォルトの名無しさん (ワッチョイ daad-n9Kp)
2021/07/22(木) 17:03:27.91ID:zX6Mldkk078デフォルトの名無しさん (ワッチョイ 4545-zSg9)
2021/07/22(木) 17:12:18.33ID:MMqyZQ9/0 > C言語で仕事するときにリストとか二分木ってあんま使わなくね?
気に障るってか、数秒えってなった
気に障るってか、数秒えってなった
79はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 693e-xL6t)
2021/07/22(木) 17:27:11.52ID:r7I3CYuM0 >>75
ワイはプロではないし組み込みのこともよう知らんけど
言語処理系を作ったときに当然ながら構文木を組み立てたりはしたし、
宣言した名前を保存するハッシュテーブルはチェイン法を使ったのでリストの一種でもあるわな。
(今なら面倒くさいので C++ で書いてしまう (標準ライブラリのコンテナを使う) だろうけど。)
分野によるとは思うけど、リストや木がそんなにほとんど目にしないというほうが不自然な気がする。
ワイはプロではないし組み込みのこともよう知らんけど
言語処理系を作ったときに当然ながら構文木を組み立てたりはしたし、
宣言した名前を保存するハッシュテーブルはチェイン法を使ったのでリストの一種でもあるわな。
(今なら面倒くさいので C++ で書いてしまう (標準ライブラリのコンテナを使う) だろうけど。)
分野によるとは思うけど、リストや木がそんなにほとんど目にしないというほうが不自然な気がする。
80デフォルトの名無しさん (ワッチョイ bd21-ayZy)
2021/07/22(木) 17:58:20.48ID:4yFOTvD80 >>77
横からだけどマイコン次第だわな。メモリの動的確保なんて、
そもそも無理ーって処理系もある。コンパイル時にメモリは固定しちゃう。
昨今の32bitのARMマイコンやらESPやら最近触ってるけどmallocも普通にあるし、
サポートライブラリにlistのソース付いてたり(それを使うべきかは悩む)。
更にc++なんかも普通に使えるから、なんか落ち着かんw
横からだけどマイコン次第だわな。メモリの動的確保なんて、
そもそも無理ーって処理系もある。コンパイル時にメモリは固定しちゃう。
昨今の32bitのARMマイコンやらESPやら最近触ってるけどmallocも普通にあるし、
サポートライブラリにlistのソース付いてたり(それを使うべきかは悩む)。
更にc++なんかも普通に使えるから、なんか落ち着かんw
81デフォルトの名無しさん (テテンテンテン MM0e-+scu)
2021/07/22(木) 21:02:00.87ID:NQdyjX4FM 簡単なテキストエディタ作ってみてください
82デフォルトの名無しさん (アウアウウー Sa5d-Hgw+)
2021/07/23(金) 00:04:27.67ID:efwzK8IKa っsed
83デフォルトの名無しさん (ワッチョイ b963-3Z6B)
2021/07/23(金) 00:26:23.76ID:IkF8M4100 あれは簡単なのか?w
コマンド自由に操れる人、果たしているのかな?
コマンド自由に操れる人、果たしているのかな?
84デフォルトの名無しさん (ワッチョイ 1301-wc+D)
2021/07/23(金) 06:51:28.40ID:U6L8J7vD0 作るのが簡単 ≠ 使うのが簡単
85デフォルトの名無しさん (ワッチョイ 3945-RnSF)
2021/07/23(金) 07:52:07.52ID:/J+0ROXX0 えー? sed禁止とか言われたら立ち直れんぞ
86デフォルトの名無しさん (ワッチョイ d12d-WppR)
2021/07/23(金) 09:04:13.56ID:/WZbwRMt0 sed awkして(ry
87デフォルトの名無しさん (ワッチョイ b15f-Hgw+)
2021/07/23(金) 09:41:53.92ID:lst4CtWH0 Screen EDitor ですねわかります
88デフォルトの名無しさん (ワッチョイ 2b28-h4Fy)
2021/07/23(金) 18:17:37.42ID:kuO5Sx1T0 よくUnixについての記事や書籍に,
「sedは入力全体を一度に読み込まず一行ごとに処理するから
動作が遅くならず,メモリ容量も気にしなくていい」
みたいなことが書いてあって,それは概ね事実だと思うんだけど,
C言語でsedを実装するときもviを実装するときに比べて
メモリ確保とかが楽なんだろうか。
「sedは入力全体を一度に読み込まず一行ごとに処理するから
動作が遅くならず,メモリ容量も気にしなくていい」
みたいなことが書いてあって,それは概ね事実だと思うんだけど,
C言語でsedを実装するときもviを実装するときに比べて
メモリ確保とかが楽なんだろうか。
89デフォルトの名無しさん (ワッチョイ 532c-TOGs)
2021/07/23(金) 19:24:45.90ID:Nx0yKcVz0 Ruby では、
IO.readlines は、ファイル内のすべてを読み込むが、
IO#each_line は、1行ずつ読み込む
IO.readlines は、ファイル内のすべてを読み込むが、
IO#each_line は、1行ずつ読み込む
90デフォルトの名無しさん (ワッチョイ b963-3Z6B)
2021/07/23(金) 19:49:44.19ID:IkF8M4100 sedにもホールドスペースがあるから、テキスト全体を読み込んで処理する事も出来る
91デフォルトの名無しさん (ガラプー KK8b-HU3q)
2021/07/23(金) 23:06:00.86ID:kreL/CiTK92デフォルトの名無しさん (ワッチョイ 2b28-h4Fy)
2021/07/24(土) 00:40:19.89ID:osiAYP280 >>91
最新の標準Unixだとsedは最低8192バイトだけ読み込めばいいみたいよ。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
最新の標準Unixだとsedは最低8192バイトだけ読み込めばいいみたいよ。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
93デフォルトの名無しさん (ワッチョイ b963-3Z6B)
2021/07/24(土) 01:03:44.23ID:3ie/V+ee0 POSIX標準は満たすべき最低レベルを規定しているって事ではないかな?
GNU sed の実装はこうみたいだ
For those who want to write portable sed scripts, be aware that some implementations have been known
to limit line lengths (for the pattern and hold spaces) to be no more than 4000 bytes. The POSIX standard
specifies that conforming sed implementations shall support at least 8192 byte line lengths. GNU sed has
no built-in limit on line length; as long as it can malloc() more (virtual) memory, you can feed or construct
lines as long as you like.
GNU sed の実装はこうみたいだ
For those who want to write portable sed scripts, be aware that some implementations have been known
to limit line lengths (for the pattern and hold spaces) to be no more than 4000 bytes. The POSIX standard
specifies that conforming sed implementations shall support at least 8192 byte line lengths. GNU sed has
no built-in limit on line length; as long as it can malloc() more (virtual) memory, you can feed or construct
lines as long as you like.
9462 (ガックシ 06eb-qCnf)
2021/07/26(月) 12:30:48.85ID:yVSFJZsJ6 自己参照型構造体(用語法的に正しくないという指摘もあるけど…)がちょっとわかったかも。
はじめは『もう一度基礎からC言語』の第31回「データ構造(10)〜構造体をポインタでつなぐ」
https://dev.grapecity.co.jp/support/powernews/column/clang/031/page02.htm
を参考にしてたんだけど,記事集の題名からも察せる通り「初めてC言語を学んでいる」
という状態で読むには向いていなかった。
図書館でそれっぽい本を漁って見つけた,
『C実践プログラミング』の17章「高度なポインタ」にある解説が
初学者としては一番わかりやすかった。
わざわざこのスレで報告する需要はないかもしれないけど,
将来に,おなじような概念の理解で詰まっているひとの
助けになるかもしれないからという言い訳でもって書き込ませてください。
--
C言語でデータ構造を作ろうと思ったら,
基本的にコンパイル時から大きさを決め打ちして用意せざる得ないけれど,
無から有を作り出せるー*1]malloc関数を用いることで
コンパイル時ではなく実行時に自由に拡大できるという,
記憶領域を食いにくいのに大規模な情報を格納できるデータ構造を作れる。
なぜ構造体を使うのかは自明すぎるためか書籍では明言されていなかった。
あえて言葉にするなら,
C言語において 複雑な情報を格納できるデータ構造を作るにあたって
「構造体を定義する」ことはもっとも一般的な慣行であることと,
C言語の演算子に自己参照型構造体の操作に非常に便利な演算子
構造体ポインタ演算子->が用意されているということが決め手なのかな。
*1: ちょっと違う気がするけど,書籍にはそう書いてあった。
はじめは『もう一度基礎からC言語』の第31回「データ構造(10)〜構造体をポインタでつなぐ」
https://dev.grapecity.co.jp/support/powernews/column/clang/031/page02.htm
を参考にしてたんだけど,記事集の題名からも察せる通り「初めてC言語を学んでいる」
という状態で読むには向いていなかった。
図書館でそれっぽい本を漁って見つけた,
『C実践プログラミング』の17章「高度なポインタ」にある解説が
初学者としては一番わかりやすかった。
わざわざこのスレで報告する需要はないかもしれないけど,
将来に,おなじような概念の理解で詰まっているひとの
助けになるかもしれないからという言い訳でもって書き込ませてください。
--
C言語でデータ構造を作ろうと思ったら,
基本的にコンパイル時から大きさを決め打ちして用意せざる得ないけれど,
無から有を作り出せるー*1]malloc関数を用いることで
コンパイル時ではなく実行時に自由に拡大できるという,
記憶領域を食いにくいのに大規模な情報を格納できるデータ構造を作れる。
なぜ構造体を使うのかは自明すぎるためか書籍では明言されていなかった。
あえて言葉にするなら,
C言語において 複雑な情報を格納できるデータ構造を作るにあたって
「構造体を定義する」ことはもっとも一般的な慣行であることと,
C言語の演算子に自己参照型構造体の操作に非常に便利な演算子
構造体ポインタ演算子->が用意されているということが決め手なのかな。
*1: ちょっと違う気がするけど,書籍にはそう書いてあった。
95デフォルトの名無しさん (エムゾネ FF33-Hgw+)
2021/07/26(月) 14:20:07.95ID:9MzzzjGrF https://dev.grapecity.co.jp/support/powernews/column/clang/031/page02.htm
観たけど余談が多過ぎてなかなか本題に入らずイライラするω
あと確かに初心者向けではない
入口にたどり着く前に挫折する文章の書き方だと思う
観たけど余談が多過ぎてなかなか本題に入らずイライラするω
あと確かに初心者向けではない
入口にたどり着く前に挫折する文章の書き方だと思う
96デフォルトの名無しさん (エムゾネ FF33-Hgw+)
2021/07/26(月) 14:22:50.46ID:9MzzzjGrF >『C実践プログラミング』の17章「高度なポインタ」にある解説が
君にとって判り易かったのかも知れないが
君の感想文を読むとあまり良い本ではなさそう
君にとって判り易かったのかも知れないが
君の感想文を読むとあまり良い本ではなさそう
97デフォルトの名無しさん (ワッチョイ b15f-5PYr)
2021/07/26(月) 14:35:32.21ID:5u5J/MDS0 ama zon 4900900648
2冊目か3冊目に読む本
2005年6月21日に日本でレビュー済み
以前、某雑誌の特集で、Cがわかればすべてがわかるというのがあり
ましたが、まぁヨイショのし過ぎな文句なのかもしれませんが、依然
として、知っておいたほうがよい言語だと思います。
Cでプログラムするような機会は、ほんとここしばらく全くないです
けど、Cを勉強していたおかげで今までかなり助かってます。なんと
いってもCの影響を受けた言語は多いですからね、色々応用がきくも
のなのですよ。
で、肝心のこの本ですが、前訳本でも書きましたが、初心者を脱しよ
うとしている人にとっては最適だと思います。よくありがちな、Cの
文法やテクをただ書いているだけの本とは違います。プログラムのス
タイルやプログラムの仕方についての記述が数多くあります。
Cのような言語の場合、どのようにコーディングするのか、言い換え
るとWHATだけでなくHOWについて必ず考えなくてはならないと思いま
す。この本は常に、HOWについて意識した記述をしており、そういった
点が、この本を推奨する大きな理由です。
ただ、この本だけで、ポインタとかのキモはさすがに理解できません
でしたので、別の本を読む必要があります。
2冊目か3冊目に読む本
2005年6月21日に日本でレビュー済み
以前、某雑誌の特集で、Cがわかればすべてがわかるというのがあり
ましたが、まぁヨイショのし過ぎな文句なのかもしれませんが、依然
として、知っておいたほうがよい言語だと思います。
Cでプログラムするような機会は、ほんとここしばらく全くないです
けど、Cを勉強していたおかげで今までかなり助かってます。なんと
いってもCの影響を受けた言語は多いですからね、色々応用がきくも
のなのですよ。
で、肝心のこの本ですが、前訳本でも書きましたが、初心者を脱しよ
うとしている人にとっては最適だと思います。よくありがちな、Cの
文法やテクをただ書いているだけの本とは違います。プログラムのス
タイルやプログラムの仕方についての記述が数多くあります。
Cのような言語の場合、どのようにコーディングするのか、言い換え
るとWHATだけでなくHOWについて必ず考えなくてはならないと思いま
す。この本は常に、HOWについて意識した記述をしており、そういった
点が、この本を推奨する大きな理由です。
ただ、この本だけで、ポインタとかのキモはさすがに理解できません
でしたので、別の本を読む必要があります。
98デフォルトの名無しさん (エムゾネ FF33-Hgw+)
2021/07/26(月) 14:52:24.77ID:9wDqt6nuF99デフォルトの名無しさん (ワッチョイ b15f-5PYr)
2021/07/26(月) 14:57:02.20ID:5u5J/MDS0 不充分。この本だけでは足りない。
2019年4月13日に日本でレビュー済み
敢えてこの本を買う意味が分からない。
20世紀に買ったが、この本だけでは解決できない問題があり、投げた。
よくある fgets & sscanf のコードの部分では、入力バッファのクリアを行う方法が書かれていなかった。
当時はインターネットのコンテンツが今ほど発達しておらず独学ではお手上げ。
他にも何か問題点があった気がするし、今や様々な解説サイト、また「よくある解説サイトの誤りを指摘するサイト」で足りる。
セキュリティ対策についても、wikipediaのサンプルコードやjpcertの「CERT セキュアコーディングスタンダード」など、今では豊富な資料がネットで入手できる。必要なら英文資料だってネットで容易に入手できる(もちろんC99の規格文書も)。
2019年4月13日に日本でレビュー済み
敢えてこの本を買う意味が分からない。
20世紀に買ったが、この本だけでは解決できない問題があり、投げた。
よくある fgets & sscanf のコードの部分では、入力バッファのクリアを行う方法が書かれていなかった。
当時はインターネットのコンテンツが今ほど発達しておらず独学ではお手上げ。
他にも何か問題点があった気がするし、今や様々な解説サイト、また「よくある解説サイトの誤りを指摘するサイト」で足りる。
セキュリティ対策についても、wikipediaのサンプルコードやjpcertの「CERT セキュアコーディングスタンダード」など、今では豊富な資料がネットで入手できる。必要なら英文資料だってネットで容易に入手できる(もちろんC99の規格文書も)。
100デフォルトの名無しさん (アウアウウー Sa5d-HpcZ)
2021/07/26(月) 16:06:22.39ID:+kNv7glZa 諸々のコンパイラや環境がC11に準拠するようになって久しく、また業務やOSSでもC11で導入された新機能を使うようになってきてる印象があるんだけど(要出典w)、こと並列処理に関してはまだまだC99+POSIXスレッドを使ってた方が良さそうね。
久しぶりに並列処理を書いてみようと思ったんだけど、C11で標準規格として導入されたthread.hに対応してるコンパイラが現時点でも(特にUnix系で)ほとんどないことが意外だった。
今のところthread.hをUnixで使いたかったらmusl Cくらいしか選択肢がないし、
ttps://www.etalabs.net/compare_libcs.html
3年前の電子掲示板の書き込み(要は典拠性が低い)ではあるけど
ttps://www.reddit.com/r/C_Programming/comments/94acpl/c11_vs_pthreads/
ほとんどの人がC11ではなくPOSIXが定めてるスレッド使ってるみたいだし。
せっかく汎OS的に並列処理がかけそうな規格なのに、もったいないというかなんというか。。。
久しぶりに並列処理を書いてみようと思ったんだけど、C11で標準規格として導入されたthread.hに対応してるコンパイラが現時点でも(特にUnix系で)ほとんどないことが意外だった。
今のところthread.hをUnixで使いたかったらmusl Cくらいしか選択肢がないし、
ttps://www.etalabs.net/compare_libcs.html
3年前の電子掲示板の書き込み(要は典拠性が低い)ではあるけど
ttps://www.reddit.com/r/C_Programming/comments/94acpl/c11_vs_pthreads/
ほとんどの人がC11ではなくPOSIXが定めてるスレッド使ってるみたいだし。
せっかく汎OS的に並列処理がかけそうな規格なのに、もったいないというかなんというか。。。
101ハノン ◆QZaw55cn4c (ワッチョイ 7be9-8Qmj)
2021/07/26(月) 20:52:03.28ID:PhHFyA7M0 >>99
>入力バッファのクリアを行う方法
入力バッファのフラッシュは確か MS のコンパイラだけでしか使えない環境依存だったかと
行末に \n が在る、とかのルールがあれば、それが出るまで読み捨てればいいのですが、そういうルールがなければどうしようもない気が
>入力バッファのクリアを行う方法
入力バッファのフラッシュは確か MS のコンパイラだけでしか使えない環境依存だったかと
行末に \n が在る、とかのルールがあれば、それが出るまで読み捨てればいいのですが、そういうルールがなければどうしようもない気が
102ハノン ◆QZaw55cn4c (ワッチョイ 7be9-8Qmj)
2021/07/26(月) 20:54:03.66ID:PhHFyA7M0103はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 413e-QsN2)
2021/07/26(月) 21:07:00.92ID:afAoM3cN0 >>100
C11 のスレッドはオプショナルなのでスレッドを提供しなくても C11 準拠を名乗れる。
C の立場からすれば標準ではあまり高レイヤな機能を要求するのは気が引けるだろうし、
かといっていまどきスレッドに全く触れないでいるというわけにもいかないという妥協なんじゃないかな。
C11 のスレッドの基本的なモデルは POSIX のスレッドとそんなに違いがない (名前が違う程度) ので、
かえって乗り換える強い動機にならないのかも。
C11 のスレッドはオプショナルなのでスレッドを提供しなくても C11 準拠を名乗れる。
C の立場からすれば標準ではあまり高レイヤな機能を要求するのは気が引けるだろうし、
かといっていまどきスレッドに全く触れないでいるというわけにもいかないという妥協なんじゃないかな。
C11 のスレッドの基本的なモデルは POSIX のスレッドとそんなに違いがない (名前が違う程度) ので、
かえって乗り換える強い動機にならないのかも。
10462 (ワッチョイ 2b28-h4Fy)
2021/07/26(月) 22:30:44.17ID:sOMY1Y2o0 >>96
>>98
ご指摘ありがとうございます。
構造体リストについてもう一度 勉強しようと思います。
(他の方も書評の引用などありがとうございます)
『C実践プログラミング』のAmazon書評にあった
『Cクイックリファレンス 第2版』というのを試しに読んでみたところ,
かなり規格網羅的で丁寧だと感じたので,
当面はこれで勉強してみようと思います。
こちらの書籍には「
struct data {
// some code...
struct data *next
}
」という形のコードの解説そのものはありませんが,
ポインタの解説をCの規格に沿ってしてくれているので
かなり良い教科書として使えそうです。
以後言い訳::
いまのところ,まだC言語の規格が全て頭に入っている状態ですらなく,
ましてや実際のプログラミング作法も分かっていない段階なので,
ある書籍を見たときの(現代における)正確性・信頼性の判断が
できないんですよね……。
『C実践プログラミング』は昔のO'Reillyが出している書籍なので
ある程度信頼できるかな,と思って読み進めていたんですが,
(実際,本質を突いていて分かりやすいと感じる部分も多くありました)
時代的にも正味の内容的にも現代において参考にすべき
良書とはいいがたいのかな……?
>>98
ご指摘ありがとうございます。
構造体リストについてもう一度 勉強しようと思います。
(他の方も書評の引用などありがとうございます)
『C実践プログラミング』のAmazon書評にあった
『Cクイックリファレンス 第2版』というのを試しに読んでみたところ,
かなり規格網羅的で丁寧だと感じたので,
当面はこれで勉強してみようと思います。
こちらの書籍には「
struct data {
// some code...
struct data *next
}
」という形のコードの解説そのものはありませんが,
ポインタの解説をCの規格に沿ってしてくれているので
かなり良い教科書として使えそうです。
以後言い訳::
いまのところ,まだC言語の規格が全て頭に入っている状態ですらなく,
ましてや実際のプログラミング作法も分かっていない段階なので,
ある書籍を見たときの(現代における)正確性・信頼性の判断が
できないんですよね……。
『C実践プログラミング』は昔のO'Reillyが出している書籍なので
ある程度信頼できるかな,と思って読み進めていたんですが,
(実際,本質を突いていて分かりやすいと感じる部分も多くありました)
時代的にも正味の内容的にも現代において参考にすべき
良書とはいいがたいのかな……?
105デフォルトの名無しさん (ワッチョイ 532c-MYQi)
2021/07/27(火) 05:25:18.45ID:x4yitIm80 ポインターで次へつないでいく、リストみたいな自己参照型。next pointer。
同じ構造体のリスト。
動的関数型のElixir は、片方向リストを使う
a → b → c → d
struct data {
struct data *next
}
これが両方向リストなら、struct data *prev も持たなければならない。
次・前の2方向へ、たどれなければならないから
a ←→ b ←→ c ←→ d
ポインターに、null を代入すれば、次・前は存在しない。
つまり、終端を表す
詳細は、アルゴリズム・データ構造を参照
同じ構造体のリスト。
動的関数型のElixir は、片方向リストを使う
a → b → c → d
struct data {
struct data *next
}
これが両方向リストなら、struct data *prev も持たなければならない。
次・前の2方向へ、たどれなければならないから
a ←→ b ←→ c ←→ d
ポインターに、null を代入すれば、次・前は存在しない。
つまり、終端を表す
詳細は、アルゴリズム・データ構造を参照
106デフォルトの名無しさん (ワッチョイ 3945-RnSF)
2021/07/27(火) 10:57:27.91ID:cZjH0t2V0107デフォルトの名無しさん (ワッチョイ 8169-8Xcr)
2021/07/27(火) 11:05:53.35ID:/ekQh9610 双方向で b を削除するのに
b->prev->next = b->next;
b->next->prev = b->prev;
b さよなら
これで済むからありがたい表記ではあるな
b->prev->next = b->next;
b->next->prev = b->prev;
b さよなら
これで済むからありがたい表記ではあるな
108デフォルトの名無しさん (ワッチョイ fbe7-WppR)
2021/07/27(火) 11:39:36.88ID:neQM5ma+0109デフォルトの名無しさん (ワッチョイ b963-3Z6B)
2021/07/27(火) 11:42:04.93ID:sIvc9ZAG0 忘れずにちゃんと成仏させろよな
110デフォルトの名無しさん (エムゾネ FF33-Hgw+)
2021/07/27(火) 16:12:06.91ID:Dog97BpdF >>106
屁理屈
屁理屈
111デフォルトの名無しさん (ワッチョイ 3945-RnSF)
2021/07/27(火) 17:25:02.44ID:cZjH0t2V0112デフォルトの名無しさん (エムゾネ FF33-Hgw+)
2021/07/27(火) 18:25:54.21ID:Dog97BpdF そもそも話がかみあってない
こっちは気付いてるけど
君は気付いていない
ただそれだけ
だから屁理屈
こっちは気付いてるけど
君は気付いていない
ただそれだけ
だから屁理屈
113デフォルトの名無しさん (ワッチョイ 3945-RnSF)
2021/07/27(火) 18:38:55.37ID:cZjH0t2V0 結局、自分は尻尾を見せないんだな
やりあう価値もないゴミだな、唾棄
やりあう価値もないゴミだな、唾棄
114デフォルトの名無しさん (ワッチョイ d901-RnSF)
2021/07/27(火) 18:52:50.94ID:S/tVMF6N0 自己参照型の構造体で固定段数のリンク手繰るのに便利にはなってるけど
自己参照型の構造体があるがゆえに -> ができたんじゃなく
単にポインタの指し先(構造体)のメンバを (*). じゃ遠回りなので直接指定したいがための存在だと思ってる
自己参照型の構造体があるがゆえに -> ができたんじゃなく
単にポインタの指し先(構造体)のメンバを (*). じゃ遠回りなので直接指定したいがための存在だと思ってる
115デフォルトの名無しさん (ガラプー KK8b-HU3q)
2021/07/27(火) 19:55:06.48ID:rlqI0SGsK116はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 413e-QsN2)
2021/07/27(火) 23:09:50.37ID:eiJldbv00 >>115
Rust ではそうしてるんだから C でも最初からそういう選択も出来たはずではあると思う。
だけど違うことをするのに同じ見た目にするのが良いかどうかというのは微妙なところ。
どちらが良いと一概に言えるもんではないからな。
Rust ではそうしてるんだから C でも最初からそういう選択も出来たはずではあると思う。
だけど違うことをするのに同じ見た目にするのが良いかどうかというのは微妙なところ。
どちらが良いと一概に言えるもんではないからな。
117デフォルトの名無しさん (テテンテンテン MMeb-wc+D)
2021/07/28(水) 00:16:37.31ID:GYM2ckiMM CはRustの派生だったのか、知らなかった
118はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 413e-QsN2)
2021/07/28(水) 00:34:49.35ID:0ASLy6H40119デフォルトの名無しさん (ワッチョイ b963-3Z6B)
2021/07/28(水) 00:53:01.29ID:Fz30Fvzo0 FortranやCobolにも導入して欲しいのか?
120デフォルトの名無しさん (ワッチョイ 2b28-h4Fy)
2021/07/28(水) 01:00:09.40ID:nkHrLyVI0 うーん?
ある構文(範疇としては演算子の形態論?)について,
「他の言語での採用例があるからC言語がそういう構文を持っていても不思議じゃなかった」
という話が展開されていたと思うんですけど,
どうして「RustはCの派生」とかFortranやCOBOLの構文の話になったんですかね……?
ある構文(範疇としては演算子の形態論?)について,
「他の言語での採用例があるからC言語がそういう構文を持っていても不思議じゃなかった」
という話が展開されていたと思うんですけど,
どうして「RustはCの派生」とかFortranやCOBOLの構文の話になったんですかね……?
121デフォルトの名無しさん (ワッチョイ b3bd-N0I0)
2021/07/28(水) 01:46:29.97ID:LX2CDHAF0 バカだから
122デフォルトの名無しさん (JP 0Heb-qCnf)
2021/07/28(水) 09:52:29.36ID:M/k1RjyqH C99以降で真偽型をboolのように表記したいときは<stdbool.h>を読み込みますが,
規格票には「型boolはマクロとして定義しろ」とあります。
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n2596.pdf#section.7.18
一般に既存の型から新しい表記の型を定義するときはtypedefを使うべきだと
(典拠は失念したのですが)聞いたことがあります。
たしか,コンパイラによる検査があったりより構文的に厳密になったりするから,
というような理由だったはずです。
真偽型boolがtypedefではなくマクロで定義されている理由ってなんでしょうか。
思い当たる理由としては,C++との互換性がありますが,それをC言語の規格で考慮する意味がない
(というか,C++の規格をC側から参照すると循環的になってしまう気がする)
気がします…。
C規格の論理的根拠の真偽型にかんする節も読みましたが,
「typedefではなくマクロを使う理由」は記載されていませんでした。
http://www.open-std.org/JTC1/SC22/WG14/www/docs/C99RationaleV5.10.pdf
規格票には「型boolはマクロとして定義しろ」とあります。
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n2596.pdf#section.7.18
一般に既存の型から新しい表記の型を定義するときはtypedefを使うべきだと
(典拠は失念したのですが)聞いたことがあります。
たしか,コンパイラによる検査があったりより構文的に厳密になったりするから,
というような理由だったはずです。
真偽型boolがtypedefではなくマクロで定義されている理由ってなんでしょうか。
思い当たる理由としては,C++との互換性がありますが,それをC言語の規格で考慮する意味がない
(というか,C++の規格をC側から参照すると循環的になってしまう気がする)
気がします…。
C規格の論理的根拠の真偽型にかんする節も読みましたが,
「typedefではなくマクロを使う理由」は記載されていませんでした。
http://www.open-std.org/JTC1/SC22/WG14/www/docs/C99RationaleV5.10.pdf
123デフォルトの名無しさん (ワッチョイ d901-bSA8)
2021/07/28(水) 10:26:19.41ID:vTqcwKkg0 マクロだと#undefできるから自分でboolを定義してる古いコードのための移行措置っぽいね
<stdbool.h>をincludeしなければいいと思うけど間接的にincludeされるケースもあるんだろう
_Boolの方は予約語になってる
7.18 (4)
..., a program may undefine and perhaps then redefine the macros bool, true, and false.
プログラムはbool、true、falseマクロをundefineして再定義することができる
7.31.11 (1)
The ability to undefine and perhaps then redefine the macros bool, true, and false is an obsolescent
feature.
⇒ bool、true、falseをundefineして再定義できる特性は廃止されつつある
<stdbool.h>をincludeしなければいいと思うけど間接的にincludeされるケースもあるんだろう
_Boolの方は予約語になってる
7.18 (4)
..., a program may undefine and perhaps then redefine the macros bool, true, and false.
プログラムはbool、true、falseマクロをundefineして再定義することができる
7.31.11 (1)
The ability to undefine and perhaps then redefine the macros bool, true, and false is an obsolescent
feature.
⇒ bool、true、falseをundefineして再定義できる特性は廃止されつつある
124デフォルトの名無しさん (アウウィフ FF5d-5PYr)
2021/07/28(水) 12:14:26.76ID:I0vZ6ZDJF Win32APIとか使わずに
Cの標準関数でカレントディレクトリではなく
今実行中のexeのpathを得る方法はどれですか?
Cの標準関数でカレントディレクトリではなく
今実行中のexeのpathを得る方法はどれですか?
125デフォルトの名無しさん (ワッチョイ 8169-8Xcr)
2021/07/28(水) 12:21:24.51ID:Zs50Z/m/0 int main(int argc, char* argv[])
の argv[0] で実行ファイルへのフルパスがえられるのは環境依存だったかな・・・
の argv[0] で実行ファイルへのフルパスがえられるのは環境依存だったかな・・・
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★2 [蚤の市★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【結婚の壁】結婚どころか今まで恋愛経験は一切ない人も…「年収500万の壁」を突破できない中間層の苦しい現実 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 先進国首脳が続々と中国訪問。なぜか近くの高市がいる日本には誰も立ち寄らず… すまんこれいじめ? [271912485]
- 【悲報】小泉「あっノート忘れた😲」会談用の資料を忘れる、自己アピールの要人ヘリ要請等、少しも覚醒していなかった [359965264]
- 【動画】ママチャリまんさん「わたし女ですけど!」シャコシャコシャコシャコ 🚴‍♀❗🚛 [329329848]
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
- 日本で対中宣戦布告が正しかったという謎の国民意識が醸成され学者や外交官が危機感を表明 [819729701]
- 安価で美術の作品作ろうと思うwwwww
