C言語なら俺に聞け 156

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9bb7-/QqT)
垢版 |
2020/09/28(月) 14:41:30.00ID:QxfbhGyV0
!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言語なら俺に聞け 155
https://mevius.5ch.net/test/read.cgi/tech/1589120427/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/01/11(月) 09:57:05.78ID:MiJ5pxpq0
PIC は CPU なのか?
と思ってデータシートを見たら RISC CPU って書いてあったわ。
2021/01/11(月) 10:16:28.83ID:RSMcM3e30
>>518
まあさすがにROM 256だとCで書くのはあまり現実的じゃないわな
2021/01/11(月) 10:28:09.66ID:dLrb5ZQk0
>>519
コンパイラが相当なじゃじゃ馬だと
調教する(というか、こっちがされるw)のに
結構な手間暇かかったりするんだよ
2021/01/11(月) 12:12:48.66ID:yw8V+8is0
>>522
PIC(というか8bit全般)は
命令やアーキテクチャがじゃじゃ馬
Cのじゃじゃ馬とは比べ物にならん

開発環境構築はCもアセンブラもかわらん
2021/01/11(月) 12:23:14.39ID:dLrb5ZQk0
Cのじゃじゃ馬を調教するにも結局アセンブラを理解する必要があるからな
アセンブラのじゃじゃ馬だけで済むならそっちの方が楽だろ
2021/01/11(月) 12:30:40.51ID:4UZaL5drd
アセンブラを理解する必要なんて無いよ
2021/01/11(月) 12:34:47.00ID:dLrb5ZQk0
あるよ
Cに対するよくある誤解で、
アセンブラから逃げるためのものではなく
アセンブラもわかる人が手抜きするためのものだ

そもそもアセンブラで書かれていたUnicsを書き直すために作られたツールだしな
2021/01/11(月) 12:37:16.69ID:4UZaL5drd
>>526
いつの時代の人?
2021/01/11(月) 12:37:56.75ID:4UZaL5drd
楽かどうか
から話が変わってるし
2021/01/11(月) 12:54:40.32ID:RSMcM3e30
256程度に収まるコードならアセンブラでもそんなに苦労しないと思うよ
2021/01/11(月) 13:03:17.58ID:4UZaL5drd
でもアセンブラの方が楽
って事はない
2021/01/11(月) 13:04:29.37ID:yw8V+8is0
そもそも楽をしたいならこんな糞CPUをわざわざ選ばない
2021/01/11(月) 13:31:51.18ID:COmzXB920
Cコンパイラの吐き出す最適化済みのコードを人力でできればよいのだが なかなか ね
2021/01/11(月) 14:40:26.73ID:dLrb5ZQk0
CはISO/IEC規格で「こうでなければならない」という決まりがあるが
アセンブラにそんなものはない
初めて触るCPUは多かれ少なかれ、それまでに蓄積した偏見に逆らうところがあり
あんまり迂闊にじゃじゃ馬呼ばわりすると他の人や未来の自分にアホにされる

たとえばPICならPICが向かない用途にPICを使おうとしたり
その逆をやらかすやつは気をつけたほうがいい
2021/01/11(月) 14:55:18.12ID:yw8V+8is0
要するにCのが楽
2021/01/11(月) 18:03:00.86ID:T9p+a0He0
>>500
関数コール構造ってスタックか?
2021/01/11(月) 19:17:14.19ID:3OtB0f6U0
組み込みだとデバッグしやすいようにサブルーチンの引数はグローバル領域に置くとか
リターンアドレスも同じようにグローバルに置くとかあったな。
2021/01/11(月) 19:22:32.27ID:exQc5JPEM
呼出規約
https://ja.wikipedia.org/wiki/%E5%91%BC%E5%87%BA%E8%A6%8F%E7%B4%84
2021/01/11(月) 21:38:48.25ID:dLrb5ZQk0
> デバッグしやすいようにサブルーチンの引数はグローバル領域に置く

COBOLer乙
2021/01/11(月) 22:18:26.34ID:3OtB0f6U0
COBOLみたいな高級言語の話じゃねーよw
540デフォルトの名無しさん (ワッチョイ ff05-AFO5)
垢版 |
2021/01/12(火) 15:17:22.63ID:XXwzvzv60
標準ヘッダファイルの関数の実際の処理コードってどこに書いてあるんですか?
ぼく「rand関数ってどんな処理すんの?」
無能教科書「stlib.hに書いてあるだよ^^」
ぼく「ほーんstlib.hはWindowsだとここのフォルダに置いてあるのか」カチカチ
ぼく「Visual Studioで開く」
ぼく「ってプロトタイプ宣言やんけ!本体の場所は?」
って感じで困惑してるんですががが?
2021/01/12(火) 15:20:38.53ID:aoRXfngS0
特にコレといった決まりはないので ランタイムライブラリのソースがあればラッキー程度
542デフォルトの名無しさん (ワッチョイ ff05-AFO5)
垢版 |
2021/01/12(火) 15:21:37.16ID:XXwzvzv60
ていせい
X stlib
O stdlib
2021/01/12(火) 15:24:49.50ID:aoRXfngS0
<Program Files>/Microsoft Platform SDK/src/crt
にあればラッキー
544デフォルトの名無しさん (ワッチョイ ff05-AFO5)
垢版 |
2021/01/12(火) 15:45:13.34ID:XXwzvzv60
>>543
たぶん自分の環境だと
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\
VC\Tools\MSVC\14.28.29333\crt\src
って奴なのだろう。
stdlib.cはなかったですね・・・
2021/01/12(火) 15:49:14.18ID:aoRXfngS0
>>544
関数で小分けになってたりで rand.c があったりなかったり
546デフォルトの名無しさん (ワッチョイ ff05-AFO5)
垢版 |
2021/01/12(火) 16:02:39.24ID:XXwzvzv60
ないですね・・・(絶望)
一端諦めたほうがよさそうかな・・・
aoRXfngS0さんは付き合ってくれてホントありがとう!感謝!
2021/01/12(火) 16:35:19.21ID:aoRXfngS0
どういう風に実現してるの? ならば ソースあたるしかないけど
どんな処理(機能)なの? ならば ヘルプなり man ページなり 色々あたれる
2021/01/12(火) 17:24:10.27ID:3icaK3oM0
ヘルプは嘘書いてたりな
いままでヘルプのいう通りある関数のフラグ書いてきたのに、ソースみたら全部無視されてたって経験が
2021/01/12(火) 18:07:45.16ID:GYcPzbFp0
クソMicrosoftの使うからだ。
2021/01/12(火) 20:21:16.28ID:ZB1xpZCm0
c/Program Files (x86)/Windows Kits/10/Source/10.0.10240.0/ucrt/stdlib/rand.cpp
c/Program Files (x86)/Windows Kits/10/Source/10.0.16299.0/ucrt/stdlib/rand.cpp
c/Program Files (x86)/Windows Kits/10/Source/10.0.17134.0/ucrt/stdlib/rand.cpp
c/Program Files (x86)/Windows Kits/10/Source/10.0.17763.0/ucrt/stdlib/rand.cpp
551イリヤは俺の嫁 (ワッチョイ ff05-v9ch)
垢版 |
2021/01/12(火) 23:06:47.42ID:XXwzvzv60
ありがとう!
早速試してみますね
2021/01/13(水) 01:30:22.66ID:uZRkh4HP0
Visual Studio は、プリコンパイル済みヘッダーだろ。
pch.h (旧 stdafx.h)

もうビルド済み
2021/01/13(水) 06:12:29.66ID:CAw2lvTg0
afxって文言を削りたかったのねw
554デフォルトの名無しさん (ワッチョイ ff05-AFO5)
垢版 |
2021/01/13(水) 11:46:14.48ID:vx4ASjNc0
大体知りたいことが分かりました!
皆さんありがとうございます!
555デフォルトの名無しさん (ワッチョイ 5f7c-/ZZX)
垢版 |
2021/01/14(木) 18:11:57.43ID:ZgCcmsal0
ヘルプとかマニュアルの嘘は多い
最初から疑うべき
特に日本語のやつ
2021/01/15(金) 07:50:56.36ID:FigS/mOA0
昔デジタルマニュアル内のサンプルソース確認してくれってわたされたやつが、
I -> 1 みたいなやつや、全角文字使われてたとか
入力ミスのサンプル集かと思った。
2021/01/17(日) 08:50:40.04ID:j2J8OKt50
いかにもな機械翻訳で、英訳しながら読まないと意味わかんないのとかね
2021/01/17(日) 10:23:01.71ID:j2J8OKt50
JIS X3010, JIS X3014どちらももうじき20年遅れ
559デフォルトの名無しさん (アウアウウー Sa05-NtCy)
垢版 |
2021/01/19(火) 09:32:50.28ID:eNVxWvb9a
>>514
メモリ16Gの超リッチなLinux環境で使ってすいません。
2021/01/19(火) 12:02:21.59ID:Uy0+fZqKd
16Gで超リッチとは何と安上りなんだ
2021/01/20(水) 03:33:05.19ID:h5t/8l7N0
16GBのPCを個人所有してたら超リッチ
って話じゃないぞ
2021/01/20(水) 08:00:15.22ID:6vEnElCe0
で、どういう話なの?
2021/01/20(水) 11:53:21.26ID:2wFV5REW0
C で書かれたコードを実行するにはリッチって話っしょ
2021/01/20(水) 17:49:36.27ID:6B9ftBiM0
void *p=malloc(1024*1024*1024*16);
2021/01/20(水) 17:55:29.77ID:HhPa7Y4p0
>>564
int型が32bitの環境ならその整数の乗算部分でオーバーフローが起きて16GBにならないんでないかな
2021/01/20(水) 20:34:38.74ID:6vEnElCe0
>>563
意味わからん
LinuxはC言語で書いたプログラム専用じゃないし4.8PiBのメモリーを持つ富岳でもLinuxは動くし
2021/01/20(水) 20:48:15.35ID:h5t/8l7N0
おまえバカだろ
RAM 16バイトの底辺CPUに比べて超リッチな環境だって話
2021/01/20(水) 22:02:18.04ID:6vEnElCe0
バカはお前w
それは単に比べる相手がおかしいだけだろ
569デフォルトの名無しさん (ワッチョイ e101-RjaL)
垢版 |
2021/01/21(木) 00:28:31.26ID:MGeCCcUA0
GUIが無いんだろ、最強じゃんw
2021/01/21(木) 06:10:52.98ID:gXoiSngNH
C「を」書いたのはリッチー
2021/01/21(木) 07:07:18.10ID:zKx4b76A0
A「おれ財布に16円しかない」
B「おれ今16万円も入ってるよ超リッチ」

>>566「16万円で超リッチとは何て安上がりなんだ」
>>566「ビル・ゲイツの財布には16億円入ってる」

A「???」
B「???」
A「誰?」
B「何で突然ビル・ゲイツ?」
A「いや、おれの財布に16円しか入ってないって話を...」

>>566「それは単に比べる相手がおかしいだけだろ」

A,B「???」
2021/01/21(木) 07:12:03.65ID:rjSQv0Wq0
>>571
それどう見ても「個人所有してたら超リッチ」って話だろ…
>>561は一体何を言いたかったんだ?
2021/01/21(木) 07:31:52.93ID:zKx4b76A0
開発ターゲットの話
2021/01/21(木) 08:08:33.69ID:rjSQv0Wq0
>>573
だからターゲットもチープな組込みからスパコンまであるだろ
限定なしに超リッチとか言われても井の中の蛙が語ってるとしか思えん
2021/01/21(木) 08:12:32.96ID:zKx4b76A0
>>574
>>571
2021/01/21(木) 08:38:58.68ID:rjSQv0Wq0
>>575
だからそう言うのは井の中でやれよって話
2021/01/21(木) 12:02:22.51ID:NDHJTNIed
流れも理解せずに話に勝手に入って来て
何を言ってるんだか
2021/01/21(木) 12:34:13.57ID:8rFkGfvd0
ここは胃の中です
2021/01/21(木) 13:14:18.23ID:hceb9QsBa
頭はプアです
2021/01/21(木) 13:40:44.42ID:xengUv2k0
もう引っ張ることでも無いやろ
2021/01/21(木) 13:54:25.02ID:rjSQv0Wq0
勝手に入ってこられるのが嫌ならブログででもやってろよw
バカすぎる
2021/01/21(木) 22:19:55.22ID:Z9MWAls10
>>570
エデ・イー?
583デフォルトの名無しさん (エムゾネ FF7f-rvE3)
垢版 |
2021/01/22(金) 12:29:52.09ID:pJ+Dy7HCF
最近のOSってmallocで実メモリ足りないときはHDD/SSDからとってきてくれるんでしょう?
2021/01/22(金) 12:44:10.92ID:MTKvFG+KM
仮想記憶のことなら全然違うし、全然最近でもないし、swapも埋まればmalloc失敗すると思うけど、何だろう
2021/01/22(金) 12:50:00.55ID:3IahkNr8M
仮想アドレス空間に隙間がなければ失敗するけどな
2021/01/22(金) 13:07:46.80ID:/3jYtxszd
>>584
いや
全然違うってこともない
イメージ的にはそれでいい
2021/01/22(金) 14:43:34.68ID:Pa9c7HBM0
スタック領域もコード領域も足りなくなったら補助記憶装置にスワップアウトするしmallocとは直接関係はしないよ
2021/01/22(金) 14:52:58.55ID:B/3A9QDar
コードがスワップアウトしたら実行中のプロセスはどうなるんでしょうか?
2021/01/22(金) 14:59:09.88ID:gbaM/AZn0
コード領域までスワップアウトすることがあるかどうかわからんけど、
あったとしたらタイムスライスの割り当てが戻ってきたときにその退避してたコードも
メモリに戻すことになるだけでしょ。
2021/01/22(金) 15:03:45.51ID:/3jYtxszd
>>587
mallocと直接関係ある
なんて誰も書いてない
2021/01/22(金) 15:07:21.69ID:/3jYtxszd
>>588
アクセスした瞬間に例外発生
これを受けてHDD/SSDに退避してあったデータをメインメモリに戻して例外を復帰する

コードデータ関係なく
2021/01/22(金) 15:18:29.37ID:Pa9c7HBM0
>>590
>>583を100回音読してこい
2021/01/22(金) 15:22:19.21ID:/3jYtxszd
主語はOS
2021/01/22(金) 15:25:32.00ID:/3jYtxszd
mallocは単なるトリガー(の1例)
2021/01/22(金) 16:21:31.38ID:Pa9c7HBM0
主語でないと関係しないって?
日本語の勉強からやり直した方がいいと思うよ
結構マジで
2021/01/22(金) 16:28:50.78ID:/3jYtxszd
非制限用法
2021/01/22(金) 16:30:53.38ID:/3jYtxszd
直接関係してなかろうと
(例えば)mallocをトリガーとしてスワップすることは事実
2021/01/22(金) 19:42:10.12ID:Pa9c7HBM0
>>596
頭大丈夫?
そろそろ黙ったほうが良くね?
2021/01/22(金) 20:55:52.26ID:red8nkhVM
確かに直接関係はしないな
syscallというレイヤーが挟まるから

で?それがどうした?
2021/01/22(金) 22:55:39.06ID:Pa9c7HBM0
>>597
> (例えば)mallocをトリガーとしてスワップすることは事実
するとは限らんしそもそも仮想記憶のない環境もあるし何が事実だかw
2021/01/22(金) 23:26:46.95ID:LtnZZu+T0
mallocがスワップアウト要求すんのか? ページアウトですらなく?
602デフォルトの名無しさん (ワッチョイ 8701-Dpoh)
垢版 |
2021/01/23(土) 00:33:31.85ID:MUxSQoqh0
mallocは常に成功する、問題はそのメモリにアクセスした時
2021/01/23(土) 00:37:30.76ID:QrEIYEWsM
Cでマルチスレッドなプログラム書くときのデザインパターンというか、オススメの書き方って何かある?
604デフォルトの名無しさん (ワッチョイ 8701-Dpoh)
垢版 |
2021/01/23(土) 00:40:17.93ID:MUxSQoqh0
>>603
pthread
2021/01/23(土) 00:47:46.15ID:JHWvmAOA0
>>603
私は c++11 以降に移行しました、言語が MT をサポしてくれているのはありがたいです‥
2021/01/23(土) 03:11:07.99ID:WU8kpFS10
>>600
mallocをコールした結果スワップすることがあるのは事実
2021/01/23(土) 03:12:25.03ID:WU8kpFS10
pthreadやc++11がデザインパターン?
2021/01/23(土) 07:30:28.10ID:4VL29Q1J0
>>606
>>602
2021/01/23(土) 08:27:23.59ID:WU8kpFS10
>>602
それは実装次第
2021/01/23(土) 08:43:07.74ID:4VL29Q1J0
>>609
だから>>583の様に言い切る奴はアホだ
って話でしょ
2021/01/23(土) 08:50:59.97ID:pbmfU4sr0
>>602
どんな実装でも仮想アドレスに連続領域が確保できなかったらmalloc呼び出し時点で失敗するんじゃないの?
612デフォルトの名無しさん (ワッチョイ 8701-Dpoh)
垢版 |
2021/01/23(土) 09:44:47.82ID:MUxSQoqh0
>>611
実際にアクセスする時には仮想連続領域があるかもしれないじゃん
613デフォルトの名無しさん (ワッチョイ 8701-Dpoh)
垢版 |
2021/01/23(土) 09:45:23.82ID:MUxSQoqh0
んで、そんな時こそのスワップですよw
2021/01/23(土) 10:27:22.67ID:4VL29Q1J0
>>611
オーバーレイで仮想空間を拡大する実装かもしれんw
オーバーヘッドがでかすぎるしそもそも今時の環境でそこまでする必要があるとは思えないけど

>>612-612
仮想アドレスと物理アドレスの区別ついてる?
615デフォルトの名無しさん (ワッチョイ 8701-Dpoh)
垢版 |
2021/01/23(土) 10:29:19.13ID:MUxSQoqh0
>>614
バカなの?
616デフォルトの名無しさん (ワッチョイ 8701-Dpoh)
垢版 |
2021/01/23(土) 10:31:56.75ID:MUxSQoqh0
>>611
とりあえず割り当てちゃうんだよ
617デフォルトの名無しさん (ワッチョイ 8701-Dpoh)
垢版 |
2021/01/23(土) 10:36:34.75ID:MUxSQoqh0
アプリとかプログラムのcodeだって全部メモリ上にロードされてないからな、アクセスした時に、あっそこにはプログラム無いから今からロードするわ〜、って感じだから
2021/01/23(土) 12:00:13.95ID:4VL29Q1J0
>>615
ネタに突っ込んでるのか、仮想アドレスも理解できてないことを指摘されて悔しいのかをはっきりさせてくれw
2021/01/23(土) 12:08:04.07ID:sAz3YI3ta
>>616
仮想アドレスに連続した空き領域が足りないのに、とりあえずで何を割り当てるんだよ
■ このスレッドは過去ログ倉庫に格納されています