!extend:checked:vvvvv:1000:512
↑
次スレを作る時は上記1行をコピーして2行に増やして必ず1行目に入るようにしてください。
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言語なら俺に聞け 148
https://mevius.5ch.net/test/read.cgi/tech/1537347410/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 149
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ af9f-7TBo)
2018/10/28(日) 22:01:44.38ID:D9Gt7gmT0417デフォルトの名無しさん (ワッチョイ 31b3-EBCi)
2018/12/11(火) 09:17:41.73ID:7sleUDEz0 プロセスルールの限界から実用的で物理的なメモリの上限はあるんだろうけど、何がどう進化するか分からないからねぇ。
単純に超多層化プロセスルールが一般化するかもしれないし、もしかするとクラウドRAMサービスとCPUアーキテクチャが融合してその限界突破なんて時代が来るかもしれん。
人間の創造力は無限と信じよう。
単純に超多層化プロセスルールが一般化するかもしれないし、もしかするとクラウドRAMサービスとCPUアーキテクチャが融合してその限界突破なんて時代が来るかもしれん。
人間の創造力は無限と信じよう。
418デフォルトの名無しさん (ワッチョイ 2b81-n9Ol)
2018/12/11(火) 10:15:17.85ID:qpk98o5j0 4GBと言う上限は意外に早くたどり着いた
4K動画をオンメモリーで編集したいとなると
途端にぶつかる壁だな
次は誰がこの壁にたどり着くかな?
4K動画をオンメモリーで編集したいとなると
途端にぶつかる壁だな
次は誰がこの壁にたどり着くかな?
419デフォルトの名無しさん (ワッチョイ dbf7-pji+)
2018/12/11(火) 12:57:57.93ID:ZRU2RXnk0 Visual Studio 2017のC/C++コンパイラってどこのフォルダに置いてあるんですか
(もしくはファイル名、あるいは、商標名?)
調べても「VSに付属するVisual C++にC/C++コンパイラが同梱されている」程度の
情報しか出てこない・・・
そのコンパイラは何て名前でどこに置いてあるんだ・・・
(もしくはファイル名、あるいは、商標名?)
調べても「VSに付属するVisual C++にC/C++コンパイラが同梱されている」程度の
情報しか出てこない・・・
そのコンパイラは何て名前でどこに置いてあるんだ・・・
420さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 31b3-BEmb)
2018/12/11(火) 13:14:43.83ID:CGbAPZXN0 >>419
スタートメニューのVSコマンドプロンプトを開いてみい。
スタートメニューのVSコマンドプロンプトを開いてみい。
421デフォルトの名無しさん (ワッチョイ dbf7-pji+)
2018/12/11(火) 13:42:28.53ID:ZRU2RXnk0 はい
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.3
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.3
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
422デフォルトの名無しさん (ワッチョイ dbf7-pji+)
2018/12/11(火) 13:48:36.76ID:ZRU2RXnk0 \Microsoft Visual Studio\2017\Community\VC の中を compiler で検索した結果
compiler.cpp
ん・・・?これ?
実行ファイルじゃなくてソースファイル・・・?
分からない、もうダメだ(絶望)
compiler.cpp
ん・・・?これ?
実行ファイルじゃなくてソースファイル・・・?
分からない、もうダメだ(絶望)
423デフォルトの名無しさん (ワッチョイ 01ea-fo8h)
2018/12/11(火) 13:51:50.68ID:rotYdjfa0 その昔は cl.exe に link.exe のフロントエンドで make は別途だったが今はどうなんだろう
424さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdb3-BEmb)
2018/12/11(火) 13:55:01.02ID:1cpVaJ7Sd cl.exeとかcl64.exeなどの名であると思う。
425デフォルトの名無しさん (ワッチョイ dbf7-pji+)
2018/12/11(火) 14:00:29.46ID:ZRU2RXnk0 ありました!(なぜか4つも)
というかcl.exeってコンパイラだったんですね
コンパイラその他を呼ぶための媒介物かと思ってますた
感謝
というかcl.exeってコンパイラだったんですね
コンパイラその他を呼ぶための媒介物かと思ってますた
感謝
426さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 31b3-BEmb)
2018/12/11(火) 14:18:43.44ID:CGbAPZXN0 最近はx64とかx86とかARMとかARM64とかいろんな環境があるから、コンパイラは複数必要になっている。
427デフォルトの名無しさん (ワッチョイ dbf7-pji+)
2018/12/11(火) 14:51:38.89ID:ZRU2RXnk0 >とかいろんな環境があるから、コンパイラは複数必要
なるほど 勉強になりました
なるほど 勉強になりました
428デフォルトの名無しさん (アウアウクー MM4d-xVWz)
2018/12/11(火) 20:20:15.88ID:3ovMnnL0M CプログラマでいまのCPUを理解しているやつなんてごく僅か。わざわざC言語を作る必要がない。もっと高水準言語で作って、VMと優秀なコンパイラに任せた方がいい。
429デフォルトの名無しさん (ワッチョイ 13d4-n9Ol)
2018/12/11(火) 20:46:12.25ID:g9W94UvY0 初心者です。
>>428ののレスを読んでちょっと混乱しているんですが、
>>いまのCPUを理解
というのがまず何を指しているのか分かりません。
パーソナルコンピュータに内蔵されているCPUでしょうか、炊飯器に内蔵されているCPUでしょうか。
>>C言語を作る必要が無い
作らなくてもすでに存在していると思うのですが、自作が必要なものなのでしょうか。
>>もっと高水準言語
C言語自体が高水準言語だと思うのですが、これ以上の高水準とはどういう基準なんでしょうか。
自然言語をコンパイルするとかでしょうか。
>>VMと優秀なコンパイラ
VMというのはVirtualMachineの略でしょうか。VM上で動作するC言語というのがあるのですか?
VMを動かすほどのリソースが無いようなマシン上では何を動かすのでしょうか。
優秀なコンパイラ、ということは Cのコンパイラは優秀ではないのでしょうか。
おじい・・・紳士のみなさま、ご教授お願いいたします。
>>428ののレスを読んでちょっと混乱しているんですが、
>>いまのCPUを理解
というのがまず何を指しているのか分かりません。
パーソナルコンピュータに内蔵されているCPUでしょうか、炊飯器に内蔵されているCPUでしょうか。
>>C言語を作る必要が無い
作らなくてもすでに存在していると思うのですが、自作が必要なものなのでしょうか。
>>もっと高水準言語
C言語自体が高水準言語だと思うのですが、これ以上の高水準とはどういう基準なんでしょうか。
自然言語をコンパイルするとかでしょうか。
>>VMと優秀なコンパイラ
VMというのはVirtualMachineの略でしょうか。VM上で動作するC言語というのがあるのですか?
VMを動かすほどのリソースが無いようなマシン上では何を動かすのでしょうか。
優秀なコンパイラ、ということは Cのコンパイラは優秀ではないのでしょうか。
おじい・・・紳士のみなさま、ご教授お願いいたします。
430デフォルトの名無しさん (ワッチョイ 2b80-7TzT)
2018/12/11(火) 21:55:08.95ID:ihMfYHRY0 Windows でも、ファイル操作なら、Ruby !
画面なしのツールなら、たいていのものは作れる
ポインタで時間を浪費することもない
画面なしのツールなら、たいていのものは作れる
ポインタで時間を浪費することもない
431デフォルトの名無しさん (ワッチョイ f14f-ZtDu)
2018/12/11(火) 23:16:54.03ID:j8P28cRB0 >>429
嘘を嘘と(ry
嘘を嘘と(ry
432さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 31b3-BEmb)
2018/12/11(火) 23:27:54.09ID:CGbAPZXN0 相手にするのが時間の無駄。悩む時間で基本情報とITパスポートの勉強するのがはるかにまし。
433さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 31b3-BEmb)
2018/12/11(火) 23:43:31.10ID:CGbAPZXN0 おじい、とか言って馬鹿にしちゃダメだよ。ワード、エクセルのエキスパートで、原子炉のタービンを設計するような「ものすごい人」も見てるんだからね。
434さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 31b3-BEmb)
2018/12/11(火) 23:50:36.12ID:CGbAPZXN0 あと補足だけど、30歳定年説は、人件費を削るための嘘だからね。
人不足の今時にこんなことを言ってるアホの取引先は排除すべし。
人不足の今時にこんなことを言ってるアホの取引先は排除すべし。
435さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 31b3-BEmb)
2018/12/11(火) 23:59:29.31ID:CGbAPZXN0 今時ハードディスク使ってモニターと照明費を削るようなケチ臭い企業とは取り引きしません!
436デフォルトの名無しさん (ワッチョイ 2b80-7TzT)
2018/12/12(水) 00:19:15.01ID:ysgUNYaF0 Code For Japan というイベント内でも、
PDF, Excel などの表示情報が入ったデータを、
エンジニア(住職)が供養する企画をやっているw
PDF, Excel などの表示情報が入ったデータを、
エンジニア(住職)が供養する企画をやっているw
437デフォルトの名無しさん (ワッチョイ e18a-Po2/)
2018/12/12(水) 06:43:02.35ID:MN/7vBAt0 >基本情報とITパスポートの勉強
何のことかと思って調べてみれば情報処理技術者試験のことか
そう言えば昔に第一種と上級シスアドに合格してたこと思い出したわ
何のことかと思って調べてみれば情報処理技術者試験のことか
そう言えば昔に第一種と上級シスアドに合格してたこと思い出したわ
438デフォルトの名無しさん (ワッチョイ 937f-xqdQ)
2018/12/12(水) 11:11:59.11ID:Fd1X4TAb0 マシン性能の限界を突破する為に、関数型プログラミングがある。
439デフォルトの名無しさん (ワッチョイ e18a-24dN)
2018/12/12(水) 11:23:33.13ID:MN/7vBAt0 関数型は抽象表現能力は高いが実行効率を追求する様な用途向きではないぞ
生産効率も圏論などの数学的思考に慣れていないと下手すればOOPよりも悪化する可能性が高い
生産効率も圏論などの数学的思考に慣れていないと下手すればOOPよりも悪化する可能性が高い
440デフォルトの名無しさん (アウアウウー Sa05-MnXc)
2018/12/12(水) 12:19:40.64ID:XAdiQzbba ( ´_ゝ`)フーン
441デフォルトの名無しさん (ドコグロ MMa3-KUw8)
2018/12/12(水) 12:31:12.08ID:4PEjGm8GM それ以前にマシン性能を言語で突破できたらノーベル賞ものかと w
442デフォルトの名無しさん (ワッチョイ 2b61-KVvr)
2018/12/12(水) 12:38:27.52ID:b75HkCZx0 CPUは関数型言語を直接実行するようにできてないから遅いでしょ。
443デフォルトの名無しさん (ワッチョイ 2b81-n9Ol)
2018/12/12(水) 12:42:36.11ID:x/hCtcVY0 フォースとともにあれ
444デフォルトの名無しさん (アークセー Sxcd-EBCi)
2018/12/12(水) 12:55:07.41ID:AGB/ZeXIx CPUの限界を超えれる関数型言語上で関数型言語を作れば元の関数型言語の限界を突破できる。
その作った関数型言語上でまたry
んなわけねーよw
その作った関数型言語上でまたry
んなわけねーよw
445デフォルトの名無しさん (アウアウウー Sa05-MnXc)
2018/12/12(水) 13:11:22.57ID:XAdiQzbba SFのスレはここですか?
446デフォルトの名無しさん (ワッチョイ 91d2-3M3s)
2018/12/12(水) 13:12:45.03ID:5HIThNOt0 【平和を実現するために】 武器調達の中止、格差拡大の抑止、労働移民の禁止、国政からのバカウヨ排除
http://rosie.5ch.net/test/read.cgi/liveplus/1544586377/l50
http://rosie.5ch.net/test/read.cgi/liveplus/1544586377/l50
447デフォルトの名無しさん (ワッチョイ 9312-ZtDu)
2018/12/12(水) 13:15:11.92ID:SHf/dQVX0 関数型プログラミングはλ計算の時点で全く理想的だから
有限のアドレッシングで動いてる今のCPUには全くそぐわない
だから関数型と今のCPUアーキテクチャは根柢から反りが合わないんじゃねえかと
すると関数型の書法を現状の機械語に書き直すだけでロスが出てくる
理想的なモンを劣化させてるに等しいが技術上はそうするしかない
そもそも関数型を直接実行できるようなCPUを人類が作れるかどうか
無限の再帰と無限のストリームが必要になっている時点で怪しい
有限のアドレッシングで動いてる今のCPUには全くそぐわない
だから関数型と今のCPUアーキテクチャは根柢から反りが合わないんじゃねえかと
すると関数型の書法を現状の機械語に書き直すだけでロスが出てくる
理想的なモンを劣化させてるに等しいが技術上はそうするしかない
そもそも関数型を直接実行できるようなCPUを人類が作れるかどうか
無限の再帰と無限のストリームが必要になっている時点で怪しい
448デフォルトの名無しさん (アウアウウー Sa05-/enL)
2018/12/12(水) 13:25:42.01ID:LIx8RHBsa 昔どっかがLisp用にスタックコンピュータだか何だか作ってなかったっけ。
それはともかく、関数型言語でも結局どういうマシン語に落とすかだから、最適化技術で高速化は出来るはずなんだがな。
Cは低水準な操作も出来るから速いコード書けるとはいえ、素直なコードは最適化無しだと他の言語と変わらないし、
速度で言えば別に低水準な操作出来る訳でも無いFortranはC並みに速いわけで。
最適化への技術や時間の掛け方が違うってだけ。
それはともかく、関数型言語でも結局どういうマシン語に落とすかだから、最適化技術で高速化は出来るはずなんだがな。
Cは低水準な操作も出来るから速いコード書けるとはいえ、素直なコードは最適化無しだと他の言語と変わらないし、
速度で言えば別に低水準な操作出来る訳でも無いFortranはC並みに速いわけで。
最適化への技術や時間の掛け方が違うってだけ。
449デフォルトの名無しさん (ワッチョイ 9312-ZtDu)
2018/12/12(水) 13:28:27.57ID:SHf/dQVX0 シンボリクスだ
450さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdb3-BEmb)
2018/12/12(水) 14:37:12.07ID:duFENGTGd 理論的限界を超えたら、その理論のモデルが事実に反する訳だから、理論の反例になってしまう。
451デフォルトの名無しさん (アメ MMb5-FdCK)
2018/12/12(水) 15:28:39.64ID:02Irmhu2M ループに展開されることを期待して末尾再起化にハゲむってギャグだよな。
最初からループ書けよw
最初からループ書けよw
452デフォルトの名無しさん (アウアウウー Sa05-/enL)
2018/12/12(水) 15:38:07.68ID:LIx8RHBsa ループだと関数渡せないから。
あとはリストを受け取ってリスト返す関数とか、IOモナドとかは
再帰関数がそのままループになる。
(リストもモナドなので、モナドを返す再帰関数がループになると言える)
あとはリストを受け取ってリスト返す関数とか、IOモナドとかは
再帰関数がそのままループになる。
(リストもモナドなので、モナドを返す再帰関数がループになると言える)
453デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/13(木) 14:18:51.88ID:oii7E7F70 初心者です。
inline指定子について教えて頂きたいのですが、
関数ポインタからinline関数を呼び出す場合、どのように展開されるのでしょうか。
また、関数ポインタを格納する配列から呼び出すような場合はどのように展開されるのでしょうか。
inline指定子について教えて頂きたいのですが、
関数ポインタからinline関数を呼び出す場合、どのように展開されるのでしょうか。
また、関数ポインタを格納する配列から呼び出すような場合はどのように展開されるのでしょうか。
454デフォルトの名無しさん (ラクペッ MM9b-8Y2+)
2018/12/13(木) 14:32:27.38ID:1m7XwvCgM inline関数の展開は環境依存
呼び出し方が如何なる方法であれ関数の構造によってはインライン展開される保証はない
ループ構造を含んでいると殆ど期待できない
呼び出し方が如何なる方法であれ関数の構造によってはインライン展開される保証はない
ループ構造を含んでいると殆ど期待できない
455デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/13(木) 14:56:19.82ID:oii7E7F70 なるほど、ありがとうございます。
まさに、
for (i = 0; i < length; i++) {
func_ptrs[i](hoge);
}
みたいなことを試そうとしているところでした。
こういう場合は展開は期待できないということですね。
今回も勉強になりました。
まさに、
for (i = 0; i < length; i++) {
func_ptrs[i](hoge);
}
みたいなことを試そうとしているところでした。
こういう場合は展開は期待できないということですね。
今回も勉強になりました。
456デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/13(木) 17:31:05.02ID:jSkPpV300 >>418
次は16EBの壁だな
次は16EBの壁だな
457デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/13(木) 18:29:51.36ID:Bj9kGxVc0 gccもclangも最適化を-O3にしても
if(a=='a'||a=='b'||a=='c'||a=='d'||a=='e'||a=='f')
をif('a'<=a&&a<='f')に置き換えてくれないのな
if(a=='a'||a=='b'||a=='c'||a=='d'||a=='e'||a=='f')
をif('a'<=a&&a<='f')に置き換えてくれないのな
458デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/13(木) 18:40:11.12ID:Fv0+Omexa Tではないと
459デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/13(木) 18:48:07.23ID:Fv0+Omexa460デフォルトの名無しさん (ワッチョイ 1e81-UKyl)
2018/12/13(木) 18:48:36.88ID:Gz5l93Ou0 GCCの動作環境は特定OSだけではないと思う
461デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/13(木) 18:51:31.61ID:Fv0+Omexa CPUによっては一つ一つ比較するように書いた方が速いなんてこともあるのかも知れないが、普通はそうならないように思う。
462デフォルトの名無しさん (ワッチョイ cad4-UKyl)
2018/12/13(木) 19:07:27.96ID:oii7E7F70 ソース全体で見たときに(a < 'a') や (a > 'f')の可能性もあるから最適化されないということでしょうか?
463デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/13(木) 19:08:30.18ID:y280e6J90464デフォルトの名無しさん (ワッチョイ 2b93-eQ7e)
2018/12/13(木) 19:28:54.20ID:VenLBJVu0 ワシのとこでも -O で「即値97を引いて即値5と比較…」が出たわ。
-O なしだと真っ正直に即値との比較が6回。
>>457 に書かれた通りの ('a'<=a&&a<='f') にならないと言っても、
'a'以上か? 'f'以下か? の判定2回よりもっと効率的になってるでしょ。
もちろん gcc のバージョンによる違いかも知れんが。
-O なしだと真っ正直に即値との比較が6回。
>>457 に書かれた通りの ('a'<=a&&a<='f') にならないと言っても、
'a'以上か? 'f'以下か? の判定2回よりもっと効率的になってるでしょ。
もちろん gcc のバージョンによる違いかも知れんが。
>>454
ときどき夢にみます、inline 指定がどんな場合にも百発百中 inline になるコンパイラがあればどんなに嬉しいか…
ときどき夢にみます、inline 指定がどんな場合にも百発百中 inline になるコンパイラがあればどんなに嬉しいか…
466デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/13(木) 19:58:30.01ID:Fv0+Omexa467デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/13(木) 20:01:00.67ID:Fv0+Omexa >>465
しかし関数へのポインタが作れてしまう時点でそれはもう inline ではなくなっているように思うのだが。
しかし関数へのポインタが作れてしまう時点でそれはもう inline ではなくなっているように思うのだが。
468デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/13(木) 20:23:30.62ID:y280e6J90 >>466
規格云々以前に、適用ヶ所と文化の問題。
C言語がガチで使われている領域はそういうところだから、「書いたとおりのコードを吐け」でないと困るし使えない。
だから適当に改変するコンパイラは嫌われる。
対してC++は「出来るだけコンパイラにやらせる」思想だし、そもそもCほど掘り下げる使い方はされないから、
「可能な限り自動的に最適化しろ」な気はするが。
規格云々以前に、適用ヶ所と文化の問題。
C言語がガチで使われている領域はそういうところだから、「書いたとおりのコードを吐け」でないと困るし使えない。
だから適当に改変するコンパイラは嫌われる。
対してC++は「出来るだけコンパイラにやらせる」思想だし、そもそもCほど掘り下げる使い方はされないから、
「可能な限り自動的に最適化しろ」な気はするが。
469デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/13(木) 21:03:29.67ID:Bj9kGxVc0 C言語のアセンブリがすぐ確認できるサイトで調べてみたんだけど、
違うみたいだね。
違うみたいだね。
>>467
なるほど…
そういうときは、call されたときは inline に展開するけれども、関数のポインタとして渡されたときに動かすためだけに(実際にポインタから呼ばれるかどうかは考えずに)inline の関数を別にバイナリーに展開しておくっていうのはどうですか?
なるほど…
そういうときは、call されたときは inline に展開するけれども、関数のポインタとして渡されたときに動かすためだけに(実際にポインタから呼ばれるかどうかは考えずに)inline の関数を別にバイナリーに展開しておくっていうのはどうですか?
471デフォルトの名無しさん (ドコグロ MMaa-skpA)
2018/12/13(木) 21:28:48.05ID:k+IaCMCPM >>468
この人何言ってるんだろう…
この人何言ってるんだろう…
472デフォルトの名無しさん (ワッチョイ d3b3-JU2d)
2018/12/13(木) 21:30:50.24ID:Pd0B4/Sw0 >>468
ん??
ん??
473デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/13(木) 21:53:47.05ID:y280e6J90474デフォルトの名無しさん (アウアウウー Sa4f-fk3u)
2018/12/13(木) 22:39:39.76ID:fVy8DFiFa >>470
関数内でstaticの変数が宣言されるケースも忘れずに。
関数内でstaticの変数が宣言されるケースも忘れずに。
475デフォルトの名無しさん (ドコグロ MMaa-skpA)
2018/12/13(木) 23:12:49.49ID:k+IaCMCPM ガイジかな? w ⇒ ID:y280e6J90
476デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/13(木) 23:49:06.95ID:y280e6J90477デフォルトの名無しさん (ワッチョイ 1e81-UKyl)
2018/12/13(木) 23:54:03.07ID:Gz5l93Ou0 踏まないように気をつけて歩こう
478デフォルトの名無しさん (ワッチョイ 8ab3-skpA)
2018/12/14(金) 05:40:44.32ID:yDEitqc60 うわっ、ガイジと言うよりマジキチやん ⇒ ID:y280e6J90
>>477が意味深になってて笑うわ
>>477が意味深になってて笑うわ
479デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/14(金) 06:20:30.12ID:lAbDnTGa0480デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/14(金) 06:26:32.39ID:lAbDnTGa0 いまやったら引き算と比較一回になった。
別の関数の中に比較を入れないと駄目みたいだった。
一個ずつ比較させたいときはvolatileを使えばいいんだな。
別の関数の中に比較を入れないと駄目みたいだった。
一個ずつ比較させたいときはvolatileを使えばいいんだな。
481デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/14(金) 06:30:05.99ID:lAbDnTGa0 最適化をいれるとaが定数だとaが消されるからaを別の関数の引数にすることで
消されないようにできる。
volatileで消さないようにするとなぜか比較が最適されない。
消されないようにできる。
volatileで消さないようにするとなぜか比較が最適されない。
482デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/14(金) 06:46:52.77ID:gWmPrUHE0483デフォルトの名無しさん (バットンキン MM33-JU2d)
2018/12/14(金) 06:52:31.89ID:TYVfP/dyM 最適化は処理の最中に使う変数が外部(別スレッドや割り込みハンドラ)から変更されないということを前提としてるから、volatileつけるとaの比較途中でaそのものが変更されるかもしれないので逐一比較になる。
まぁスタック上のローカル変数aが外部から変更されるってのは通常は単なるスタック破壊のバグだけどね。
まぁスタック上のローカル変数aが外部から変更されるってのは通常は単なるスタック破壊のバグだけどね。
484デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/14(金) 06:53:45.77ID:8u55nHdC0 >>468
おまえ4.3BSDのccとかまだ使ってるのか?
おまえ4.3BSDのccとかまだ使ってるのか?
485464 (ワッチョイ 2b93-eQ7e)
2018/12/14(金) 07:50:49.15ID:FIv/Q2MJ0 >>479-480
素直なコードで出るはずだけどなぁ。
サンプル abcdef.c
第1引数の最初の文字が [a-f] なら yes, それ以外なら no と表示
(引数が与えられなかった場合は no を表示)
$ cat abcdef.c
#include <stdio.h>
int main(int argc, char *argv[]) {
int a;
a = (argc>1) ? argv[1][0] : 'z';
if (a=='a'||a=='b'||a=='c'||a=='d'||a=='e'||a=='f') printf("yes\n");
else printf("no\n");
return 0;
}
$ gcc -S abcdef.c
最適化なし 比較6回
$ gcc -O -S abcdef.c
最適化 97引いて5と比較
素直なコードで出るはずだけどなぁ。
サンプル abcdef.c
第1引数の最初の文字が [a-f] なら yes, それ以外なら no と表示
(引数が与えられなかった場合は no を表示)
$ cat abcdef.c
#include <stdio.h>
int main(int argc, char *argv[]) {
int a;
a = (argc>1) ? argv[1][0] : 'z';
if (a=='a'||a=='b'||a=='c'||a=='d'||a=='e'||a=='f') printf("yes\n");
else printf("no\n");
return 0;
}
$ gcc -S abcdef.c
最適化なし 比較6回
$ gcc -O -S abcdef.c
最適化 97引いて5と比較
486デフォルトの名無しさん (ワッチョイ 0a12-rp3U)
2018/12/14(金) 09:57:08.83ID:v3sklYn80 volatileは磁気コアメモリ時代の命令じゃねえのか
487デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/14(金) 10:14:56.92ID:lAbDnTGa0488デフォルトの名無しさん (ワッチョイ 3b8a-8Y2+)
2018/12/14(金) 10:15:15.85ID:QZB89f550 現在でも組み込み開発でSFRを弄るにはvolatile宣言は必須
489デフォルトの名無しさん (ワッチョイ 1e61-6aDR)
2018/12/14(金) 10:28:42.01ID:lAbDnTGa0 結論を言うとvolatile で最適化を調べるために最適化を抑制したのが間違いの原因だっと
ということだな。
ということだな。
490デフォルトの名無しさん (ワッチョイ 3fe3-3flP)
2018/12/14(金) 12:14:57.88ID:E1rpoA/W0 volatileは変数がI/Oポートにマッピングされてることを想定した仕様
コンパイラによる省略とかを許さず書いてある通りにアクセスする
コンパイラによる省略とかを許さず書いてある通りにアクセスする
491デフォルトの名無しさん (アークセー Sxa3-JU2d)
2018/12/14(金) 12:47:24.45ID:TZB/LQMkx >>490
I/Oだけじゃないよ。
別スレッドなど異なる実行コンテキスト間で共有する領域へのアクセスはvolatileをつけないといけない。
SFRへのアクセスもソフトとハードという実行コンテキストが異なる。
I/Oだけじゃないよ。
別スレッドなど異なる実行コンテキスト間で共有する領域へのアクセスはvolatileをつけないといけない。
SFRへのアクセスもソフトとハードという実行コンテキストが異なる。
492デフォルトの名無しさん (アウアウウー Sa4f-8Py6)
2018/12/14(金) 14:14:04.61ID:7OLXAkOEa 静的変数は全部つけないといかんのだろうね。
利用の趣旨としては。
利用の趣旨としては。
493デフォルトの名無しさん (ワッチョイ 8a9f-+gtp)
2018/12/14(金) 15:46:34.42ID:FWw1nr6R0 ID:y280e6J90はvoid君だろ
494デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/14(金) 16:07:06.94ID:cCP3RgWTa volatile の使い所
1. マルチスレッドで他スレッドと共有される変数(ただし、別途ロックも掛けた方が良い)。
2. シグナルハンドラとその他の処理で共有する変数。
3. longjmp() 使う時。
1. マルチスレッドで他スレッドと共有される変数(ただし、別途ロックも掛けた方が良い)。
2. シグナルハンドラとその他の処理で共有する変数。
3. longjmp() 使う時。
495デフォルトの名無しさん (アウアウウー Sa4f-mTCp)
2018/12/14(金) 16:08:45.11ID:cCP3RgWTa これ書き忘れてた。
4. 指している先の内容が本当に揮発性の場合(I/Oポート等)
4. 指している先の内容が本当に揮発性の場合(I/Oポート等)
496デフォルトの名無しさん (ワッチョイ 2bea-GDnO)
2018/12/14(金) 16:22:16.94ID:lsnrrwE80 記述された手続き以外の要素によって変数値が変わるなら
497デフォルトの名無しさん (ワッチョイ 8a7f-Xq6B)
2018/12/14(金) 19:01:54.99ID:RfUJ40dd0 >>494
volatile変数をマルチスレッドに使うとかいう誤った知識を流布しないでくれ
volatileに指定してもマルチスレッド共有変数に求められる
* メモリフェンス
* 演算の原子性
は確保できない
ttps://stackoverflow.com/questions/4557979/when-to-use-volatile-with-multi-threading
volatile変数をマルチスレッドに使うとかいう誤った知識を流布しないでくれ
volatileに指定してもマルチスレッド共有変数に求められる
* メモリフェンス
* 演算の原子性
は確保できない
ttps://stackoverflow.com/questions/4557979/when-to-use-volatile-with-multi-threading
498デフォルトの名無しさん (アウアウウー Sa4f-8Py6)
2018/12/14(金) 19:20:00.03ID:td3PjTJAa 原子性って全然直交した概念ちゃうか。
確保できるとかできないとかいう話になるのがおかしい。
確保できるとかできないとかいう話になるのがおかしい。
499デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/14(金) 19:41:07.95ID:gWmPrUHE0500デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/14(金) 20:47:21.99ID:8u55nHdC0 volatile なんか忘れて素直に pthread とか C++11 とか使っていればいいと思うのです…
502497 (ワッチョイ 0a21-8Bx+)
2018/12/14(金) 21:15:41.90ID:6hfmhPbO0503デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/14(金) 22:13:48.43ID:gWmPrUHE0 >>502
知らんよ、俺はLinuxのsignalなんて使って無いし。
そのページには必要だと書いてあるし、そうなんだろうさ。
が、そもそも、俺に言わせれば
・volataileで実装出来る=ポーリングループ&せいぜいハンドシェーク=糞
・プロセス間通信する意味がない
スレッド間通信でsleep/wakeupで何も問題ないし、その方が自然だ。
この場合に自前でvolatileなんて書くことはない。
ハードウェアを直接叩かないのにvolatileとか、設計を見直した方がいいと思うぜ。
知らんよ、俺はLinuxのsignalなんて使って無いし。
そのページには必要だと書いてあるし、そうなんだろうさ。
が、そもそも、俺に言わせれば
・volataileで実装出来る=ポーリングループ&せいぜいハンドシェーク=糞
・プロセス間通信する意味がない
スレッド間通信でsleep/wakeupで何も問題ないし、その方が自然だ。
この場合に自前でvolatileなんて書くことはない。
ハードウェアを直接叩かないのにvolatileとか、設計を見直した方がいいと思うぜ。
504デフォルトの名無しさん (ワッチョイ 8abd-yieq)
2018/12/15(土) 00:19:10.79ID:MJLVMCBK0 >>429
Cのコンパイラは環境依存になるため、コンパイラの出来、不出来がある。
Cのコンパイラは環境依存になるため、コンパイラの出来、不出来がある。
505デフォルトの名無しさん (ワッチョイ d3b3-JU2d)
2018/12/15(土) 01:44:33.10ID:USiGJg2x0 必要条件と十分条件の違いが分かってないやつがいるな。
506デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/15(土) 09:51:27.56ID:hAY8T09E0 >>503
フェンスがないのにハンドシェークとは、これいかに
フェンスがないのにハンドシェークとは、これいかに
507デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 11:50:06.13ID:nIs3KSLY0 >>506
> 標準シグナルの場合、そのシグナルがブロックされている間に 同じシグナルの複数のインスタンスが配送されても、 1 つだけがキューに入れられる。
> https://linuxjm.osdn.jp/html/LDP_man-pages/man7/signal.7.html
しかし実際ハンドシェークだと思うぜこれは。
意識高い系()ゆとり()がCをやるとfenceという『CPU命令』が必要だと思っちゃうのか?
まあ無理も無いとも思えるが。
> 標準シグナルの場合、そのシグナルがブロックされている間に 同じシグナルの複数のインスタンスが配送されても、 1 つだけがキューに入れられる。
> https://linuxjm.osdn.jp/html/LDP_man-pages/man7/signal.7.html
しかし実際ハンドシェークだと思うぜこれは。
意識高い系()ゆとり()がCをやるとfenceという『CPU命令』が必要だと思っちゃうのか?
まあ無理も無いとも思えるが。
508デフォルトの名無しさん (ワッチョイ 1e81-UKyl)
2018/12/15(土) 11:53:03.04ID:qrRqm5Rq0 それはC言語の話なのか、OSの話なのか、CPUの話なのか
509デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 12:22:47.52ID:nIs3KSLY0 フェンスが必要になったのはコンパイラ側の都合だから、C言語の話だね。
これが理解出来ないのはお前がゆとりの馬鹿だからだ。
マジな話、馬鹿の癖に煽るゆとりは死んで欲しいね。
お互いに何も得る物がない。
これが理解出来ないのはお前がゆとりの馬鹿だからだ。
マジな話、馬鹿の癖に煽るゆとりは死んで欲しいね。
お互いに何も得る物がない。
510デフォルトの名無しさん (バットンキン MM33-JU2d)
2018/12/15(土) 16:08:16.17ID:uiukVmhyM511デフォルトの名無しさん (ブーイモ MM6f-DFdf)
2018/12/15(土) 16:24:43.93ID:tkQQweukM フェンスが必要なのはCPUとコンパイラ双方のためだ。やっぱvoid君は馬鹿だね。
512デフォルトの名無しさん (ワッチョイ 6acb-UKyl)
2018/12/15(土) 17:21:35.13ID:hAY8T09E0513デフォルトの名無しさん (ワッチョイ f34f-rp3U)
2018/12/15(土) 18:37:35.51ID:nIs3KSLY0 >>510-512
ゆとりは死ななきゃ直らないと再認識した。
ゆとりが馬鹿であり続ける権利を尊重し、教えてやらないことにする。
つっても、ググればいくらでも出てくるし、ゆとり以外には実害はないはず。
マジな話、上達したい奴は、ググっても疑問が解消しないときのみ、掲示板等に頼るようにした方がいい。
自力で勝手に進んでいけるか、いちいち構ってちゃん状態になるかでは、上達速度に雲泥の差が出る。
こんなところで下らない煽り合いに興じてるから、ゆとりはゆとりのままなのだと思うし。
StackOverflow(英語版)はかなりオススメだ。迷ったらそこを頼れ。
ゆとりは死ななきゃ直らないと再認識した。
ゆとりが馬鹿であり続ける権利を尊重し、教えてやらないことにする。
つっても、ググればいくらでも出てくるし、ゆとり以外には実害はないはず。
マジな話、上達したい奴は、ググっても疑問が解消しないときのみ、掲示板等に頼るようにした方がいい。
自力で勝手に進んでいけるか、いちいち構ってちゃん状態になるかでは、上達速度に雲泥の差が出る。
こんなところで下らない煽り合いに興じてるから、ゆとりはゆとりのままなのだと思うし。
StackOverflow(英語版)はかなりオススメだ。迷ったらそこを頼れ。
514デフォルトの名無しさん (ブーイモ MM6f-DFdf)
2018/12/15(土) 19:04:30.55ID:/O2tQ50qM void君は謎の捨て台詞好きだよね。かっこ悪いよ。
515デフォルトの名無しさん (ワッチョイ 1e81-UKyl)
2018/12/15(土) 19:15:51.64ID:qrRqm5Rq0 ここにはお前に用がある人はいないそうだ
516デフォルトの名無しさん (アメ MM47-KgdI)
2018/12/15(土) 19:17:41.02ID:CVS0UY4MM 霊界は存在するよね。ググればいくらでも出てくるしww
■ このスレッドは過去ログ倉庫に格納されています
