C言語なら俺に聞け 154

■ このスレッドは過去ログ倉庫に格納されています
2020/01/14(火) 19:32:30.16ID:SgRnb4BR0
!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言語なら俺に聞け 153
https://mevius.5ch.net/test/read.cgi/tech/1566050562/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/02/04(火) 13:04:48.75ID:6srsz/DQ0
unsigned charの配列をキャストしてる時点で何?
309は構造体の性質を調べる実験をしていて
そのために普段しないことをわざとやってるんだが
319デフォルトの名無しさん (アウアウウー Sa21-lBRq)
垢版 |
2020/02/04(火) 15:53:52.78ID:MHG3R7Tga
ネットワークやファイルから読んだバイナリの塊を構造体に当て嵌めて解析を楽にするなんてことは、よくやる。

まあ、本当だったらバイナリから読んで構造体側にコピーするような関数を作った方が良いんだろうけどね。(またはPerlのunpackみたいなやつ)。
320デフォルトの名無しさん (アウアウウー Sa21-lBRq)
垢版 |
2020/02/04(火) 16:00:02.30ID:MHG3R7Tga
そういえばsscanf()と似たような感じでバイナリとフォーマットと可変引数で代入先ポインタ並べて渡すとバイナリ側から読んで値入れてくれるようなPerlのunpack風な関数も作ろうと思えば作れるね。
2020/02/04(火) 19:11:16.20ID:b7qwiVAD0
>>319
それをビットフィールドでやって大失敗したことある
ビットフィールドの並び順がコンパイラ依存なんて知らんかったんや
2020/02/04(火) 19:18:36.03ID:rvpdgwbCd
コンパイラ依存や環境依存はビックフィールドだけじゃない
2020/02/04(火) 19:18:58.04ID:rvpdgwbCd
ビットフィールド
2020/02/04(火) 20:24:28.00ID:TWTPcweW0
あの大事件の裏にはこういうミスが隠されているのか……
2020/02/04(火) 20:31:06.36ID:CGekWIL20
コロン抜け?
2020/02/04(火) 21:26:03.56ID:lLuVC2X20
あれはFortranだろ
327デフォルトの名無しさん (アークセー Sxbd-nHCh)
垢版 |
2020/02/04(火) 22:02:12.09ID:xaJSTMSvx
僕のはリトルエンディアン
2020/02/04(火) 23:14:03.74ID:6/2RTZHA0
漏れが、新幹線のチケット開発してた時には、ビットフィールドなどは使わなかった

全てのバイト内で、データの位置を決めて、ビット演算でやっていた
2020/02/05(水) 01:10:02.17ID:N1gPUNHxp
309のb_testの数値ってなぜ0x3344じゃないの?
それすらわからん
ここのスレレベル高いな
2020/02/05(水) 01:21:18.13ID:wXMktV7+0
>>329
実行環境にもよると思います
2020/02/05(水) 01:26:09.05ID:wXMktV7+0
>>329
x86系CPUはリトルエンディアン

https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3
332デフォルトの名無しさん (アウウィフ FF9b-VM48)
垢版 |
2020/02/05(水) 19:45:58.28ID:2rKdW1EcF
>>317 みたいなのも居る訳で
2020/02/05(水) 20:13:44.79ID:PZ/5vknBd
>>317で何を言おうとしたかわからなかったか
2020/02/05(水) 20:18:11.07ID:PZ/5vknBd
キャストしてる時点でアラインメントは
335デフォルトの名無しさん (ワッチョイ d735-oJhu)
垢版 |
2020/02/05(水) 23:49:56.70ID:V2ceD5vC0
どんだけかまって欲しいの。
2020/02/06(木) 06:52:45.18ID:VEO7DUBt0
机上でガタガタ言うだけで満足するやつもいれば
実際に境界違反すると何が起きるのか自分の目で目撃したいやつもいるのさ

俺は後者に共感する
2020/02/06(木) 07:27:32.13ID:/W9iMVJD0
問題なくアクセス可能
例外発生
ズレてアクセス

性能以外の振舞いこのくらいは経験がある
他にあるかな?

ズレてアクセスされるCPUは
問題が分かりにくく厄介
2020/02/06(木) 07:35:58.42ID:/W9iMVJD0
机上も重要
CPUのデータシートやコンパイラの説明書は当然見ないと

ズレてるスタックポインタをずらしたまま使う意味とかわからんでしょ
2020/02/06(木) 08:03:27.48ID:VEO7DUBt0
机上がいらんとは言ってねえよ
何のための机上か考えろということだ
2020/02/06(木) 08:08:22.76ID:h/xvakBVd
ビットフィールドって環境依存なのか
分かりやすくて良いのに…
2020/02/06(木) 14:31:03.01ID:/W9iMVJD0
構造体自体環境依存
342デフォルトの名無しさん (ワッチョイ d735-oJhu)
垢版 |
2020/02/06(木) 19:36:45.30ID:OKCzzxK90
>>334
アライメントは何?
2020/02/06(木) 21:11:00.88ID:yuUE1QQrM
定義しただけじゃ構造体のアライメントを算出してくれないコンパイラがあるんだなー
union { ;static{ al,ah;ググってて遭遇ちょっと新鮮な驚き
実体を作らず、ポインタキャストでのみ利用してっとグチャゲチャなアドレスを引っ張ってくるみたいな
344デフォルトの名無しさん (ラクッペ MMcb-oJhu)
垢版 |
2020/02/07(金) 17:54:26.07ID:flffdOy2M
AAと出力されて欲しいのですがなぜ4バイトになるのでしょうか
https://ideone.com/0v6mPr
2020/02/07(金) 18:46:29.60ID:ZbQSjjsiM
charを引数として渡すとintに格上げされる。
charがこの環境ではsigned charらしいので、0xAAはマイナス扱いされる。
intに格上げするときに符号拡張されて上位24ビットが1で埋められる。
346デフォルトの名無しさん (ラクッペ MMcb-oJhu)
垢版 |
2020/02/07(金) 19:07:15.66ID:OIss2gZ6M
>>345
ありがとうございます
そもそもunsignedつけ忘れてました
2020/02/07(金) 19:12:45.37ID:2Fs88HW00
こうする、とか
printf("%0X\n", *(unsigned char*)u);
printf("%0X\n", (unsigned char)u[0]);
348デフォルトの名無しさん (ワッチョイ d735-oJhu)
垢版 |
2020/02/07(金) 19:54:01.80ID:loJf6Qnv0
なんもわかってなくて草
349デフォルトの名無しさん (ワッチョイ 571d-uqPE)
垢版 |
2020/02/07(金) 22:52:47.29ID:GxNDg+Fe0
実務経験1年で月収80万稼げるエンジニアになった理由
https://www.youtube.com/watch?v=DrbbyGsHQic
意識が低いエンジニアこそフリーランスになれ
https://www.youtube.com/watch?v=nSEaAJlgjbQ
フリーランスエンジニアの週3労働ってどんな感じ?
https://www.youtube.com/watch?v=8yjoDCdbzMc
ぼくがスキルのない社畜ならこうやって脱する
https://www.youtube.com/watch?v=aae8xxbUlMM
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
https://www.youtube.com/watch?v=U0OCGRVLFsM
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
https://www.youtube.com/watch?v=iBOeiSKBIW8
貧乏人こそ社会不適合者
https://www.youtube.com/watch?v=O3BT72BIBJI
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
https://www.youtube.com/watch?v=IRrCgTy3ckc
より良いオファー貰ってるのに転職しないとか何考えてるの?
https://www.youtube.com/watch?v=i0J6uRhlj7o
2020/02/08(土) 01:58:07.50ID:uvgcwZ2m0
>>349
グロ
2020/02/10(月) 02:19:19.98ID:VQtOVB2v0
質問させてください。

ある.dllを作成するCのプロジェクトがあるのですが、開発環境をeclipseからvisualstudioへ移行しました。
このdllを使用する別のCのプロジェクトがあるのですが、eclipseでビルドしたdllは使用できていたのですが、visualstudioでビルドしたdllを使用しようとすると未解決エラーでビルドできなくなってしまいました。
作成した.libファイルをdumpbinで確認すると、eclipseでビルドしたものには関数名にいろいろ装飾(@とかcdeclとか引数とか)がついているのですが、visualstudioでビルドしたものには装飾がついていませんでした。
この違いが原因だとは思うのですが、visualstudioでも関数名に装飾がついたlibファイルを作成するにはどうすればよいのでしょうか?
2020/02/10(月) 03:14:01.48ID:VQtOVB2v0
>>351ですが、dllを使用する側のプログラムに「c++コードとしてコンパイル」を設定していたせいで読み込めなくなっていることがわかりました。
質問内容についても、CとC++の違いについて調べていけば良さそうとわかったので、自力で調べてみようと思います。
ありがとうございました。
353デフォルトの名無しさん (ワイーワ2 FFdf-VM48)
垢版 |
2020/02/10(月) 16:25:12.95ID:TGcYvj29F
回答しようと思ったけど自己レスが付いていたので控えます。
自分で調べて下さい。良い心がけです。
354デフォルトの名無しさん (ラクッペ MMcb-oJhu)
垢版 |
2020/02/10(月) 17:30:05.64ID:sdl18RcGM
ゴミレスすんな
2020/02/11(火) 03:20:33.73ID:ShQqPfw10
>>352ですが解決しました。

c++ではマングリングが行われるためソースコード上の関数名とコンパイル後の関数名が異なる
一方cコードとしてコンパイルしたライブラリはソースコード上の関数名がそのままコンパイル後の関数名になる
この違いが原因で、c++コードとしてコンパイルされた呼び出し側プログラムではライブラリの関数を参照できなくなってしまっていました
解決策はc++側の関数宣言にextern "c"をつけること。もちろんヘッダーファイルなのでinclude文をextern "c"で囲んでしまうことでした。

たまに見かけるextern "c"ってこういうことだったんですね。お騒がせいたしました。
2020/02/11(火) 07:41:04.94ID:KT61u4Oq0
マンデリングってえろいよね
2020/02/11(火) 07:47:01.07ID:lXsf9fbVd
ポンデリング
358デフォルトの名無しさん (アウアウウー Sac3-Oc5d)
垢版 |
2020/02/14(金) 20:51:49.51ID:OVlsC64Va
うまいよね
2020/02/14(金) 20:52:25.46ID:x/oqiD9H0
おいC
おいCぺろぺろ
2020/02/15(土) 07:15:19.12ID:AzMEQbXZ0
>>355
extern "c" ではなく
extern "C" 大文字だぞ

それがわかってないのに、よく解決できたな
2020/02/15(土) 09:05:57.27ID:G4DtF/s2M
亀レスなうえにそのツッコミてw
2020/02/15(土) 20:35:31.35ID:4O8uAQVX0
おれvalgrindと結婚するんだ
363デフォルトの名無しさん (ワッチョイ 12ad-ESCD)
垢版 |
2020/02/16(日) 16:37:12.41ID:e+hZCGM40
そしてフラグが立つと
2020/02/18(火) 02:06:40.26ID:tIozcGEh0
#if defined
2020/02/19(水) 12:02:30.63ID:/eqfvSaW0
C言語関係ないんだけど、並行処理と並列処理ってさ
論理的にシミュレートするのが並行処理で、物理的にパソコンを二台並べるのが並列処理だよね?
並行と並列と混合してる記事がネットに多くてもやもやするんだけど
366デフォルトの名無しさん (ワイーワ2 FFdf-IPX/)
垢版 |
2020/02/19(水) 12:03:31.56ID:cGULNOoWF
違う
2020/02/19(水) 12:11:00.93ID:/eqfvSaW0
>>366
どこら辺が間違ってます?
2020/02/19(水) 12:17:49.87ID:pLtxXQrp0
>>365
だいたいあってる
2020/02/19(水) 12:21:53.17ID:26AgvMdu0
>>365
合ってる
ユニプロセッサでプリエンプティブは並行処理
並列は小学校で習う乾電池のつなぎ方みたいなもん
2020/02/19(水) 13:02:11.34ID:/eqfvSaW0
>>368
>>369
合ってますよね
ネットの記事っていい加減だな
2020/02/19(水) 13:08:12.27ID:S1r33x/od
厳密な境目なんて無いと思う
2020/02/19(水) 13:19:09.44ID:UeS2uiZKM
つまり別々のcpuなら並列でそうでなければ平行ってこと?
2020/02/19(水) 14:13:39.42ID:7brGlgjia
二股かけるのが平行処理、3Pでやるのが並列処理であってる?
2020/02/19(水) 15:19:50.59ID:rnMFG2oOM
>>373
二股は平行ですらないただのシングルスレッド処理じゃないか?
2020/02/19(水) 17:01:59.51ID:9MnW04fvM
いや、それぞれは相手を独占しているつもりなので、並行。(平行じゃないよ)
2020/02/19(水) 17:04:57.92ID:xJfuBtj10
二股はデッドロックで行き詰まる
2020/02/19(水) 20:05:25.47ID:ohbwSroQ0
並列と並行を明確に区別する流儀と、同時並行に実行されるなら全部並列、という流儀に別れていると思う。
2020/02/19(水) 20:17:02.16ID:/eqfvSaW0
解釈が二通りあると?
それは問題では
議論できないじゃん
2020/02/19(水) 20:28:48.22ID:26AgvMdu0
性能的に全然違うんだが
時に数千倍も
2020/02/19(水) 20:55:03.43ID:SK5VFny8d
>>378
議論出来るように具体的に語れば良いんだよ
2020/02/19(水) 20:57:19.86ID:SK5VFny8d
そもそも同時かどうかなんて区別出来ない、区別しても意味がない事が多い

1コアで複数スレッド動くのはどっち?
とか
382デフォルトの名無しさん (ワッチョイ 6f8c-L8iH)
垢版 |
2020/02/19(水) 20:59:46.46ID:AEvYKzFT0
クラウドとクラスタ?
383デフォルトの名無しさん (ワッチョイ e31d-CqDg)
垢版 |
2020/02/19(水) 21:35:58.84ID:HsCXonKI0
【収益報告】実働月10hでも大金稼ぐ方法を解説【年収6,000万】
https://www.youtube.com/watch?v=o2ISWP-VZsw
年収3000万円以上になってはじめて理解すること【拝金からの脱却】
https://www.youtube.com/watch?v=nLEfFj2jL3A&;t=182s
貧乏人に発言権とかないからwww
https://www.youtube.com/watch?v=BLGxunoO7X0&;t=32s
【日常】実働20hで700万円稼ぐインフルエンサーの生活を公開
https://www.youtube.com/watch?v=YhX6Quus6lY&;t=232s
皆正しいと思ってるけど実は間違ってる上司のクソ発言5選
https://www.youtube.com/watch?v=-M0BICeFSFg
月収700万円の僕が大学生のうちに身につけておきたかったスキル4選
https://www.youtube.com/watch?v=PZ2YYhCryAQ
2020/02/19(水) 22:29:58.40ID:fef8YCm90
並んで行くのが並行
列が並んでいるのが並列

なんでTSSは並行なの?並列じゃダメなの?
なんでデュアルコアは並列なの?並行じゃダメなの?
2020/02/19(水) 23:45:11.13ID:i+U4mRBo0
とりあえずこういう時は日本語で考えるのやめようぜ。並列も並行も海外で生まれた概念を翻訳しただけなのでそのまま考えると帰って混乱する。

concurrentは同時。これは時間的な概念。
parallelは並存。これは物理的な概念。

つまり同時に処理するものはなんでもconcurrentな処理と言っていいわけだけど、その中でも処理するcpuも別れてるものがparallelな処理。
2020/02/20(木) 10:12:07.92ID:znahik0W0
>>385
TSSはconcurrentだけどparallelじゃない(ミクロにみればconcurrentでもない)
デュアルコアはparallelだしconcurrentでもある
でいい?

「TSSは並行、デュアルコアは並列」の使い分けを肯定しないってことでいいのかな
2020/02/20(木) 10:53:44.93ID:yQ1/Uz2n0
TSS? 全然関係ないぞ
ユニプロセッサの場合CPUは並行処理で動くが
端末やチャネルは並列だ
マルチプロセッサでもTCASにCPUアフィニティがかかっている場合まであるしな
2020/02/20(木) 11:39:06.77ID:qJHTNx44d
ここで定義をまとめても会話する人全員が共有しないと意味がない

誤解の可能性があるなら
「平行」「並列」なんて言葉に頼らず
具体的に語らないと
2020/02/20(木) 12:04:59.79ID:2rLj+nIZM
>>387
TSSでチャネルガーとか頭おかしいのか?
そんなこと言い出したらPCレベルでもシングルプロセッサ、シングルコア、シングルプロセスでもIOが複数同時動作とかあるだろw
2020/02/20(木) 13:30:18.30ID:MjOQHpIxM
>>385
これ見て納得した。並行と並列って翻訳した人が戦犯だな。
2020/02/20(木) 13:47:06.99ID:naozblCad
>>389
だから、そうだよ?
2020/02/20(木) 16:04:59.94ID:yQ1/Uz2n0
>>389
失礼なやつだな
でTSSと並行並列は関係あるとでも言いたいのか?
そうでもなく喧嘩売ってくるやつこそクルクルパーにしか見えんぞ
2020/02/20(木) 16:13:55.60ID:yRc9LKeD0
喧嘩を買う人が出てきました
2020/02/20(木) 19:00:10.65ID:2rLj+nIZM
>>391
理解したら引っ込んでたら?

>>392
で、チャネルがどうしたって?
知ったかするならもうちょっと勉強しないと恥かくだけだぞw
395デフォルトの名無しさん (ワッチョイ 2335-wHG4)
垢版 |
2020/02/20(木) 19:00:52.93ID:Pb7WanUc0
何だこの煽りカス
2020/02/20(木) 20:47:43.91ID:znahik0W0
TSSは関係無いの?
>369の
>ユニプロセッサでプリエンプティブは並行処理
ってTSSのことじゃないの?

並行/並列、concurrent/parallelはどっちでもいいよ
単語を置き換えてるだけだ

>365は"「TSSは並行、デュアルコアは並列」と使い分けるもんだ"と言ってるように見える
>368,369はそれを肯定してる
それ本当かなぁどの程度浸透してるのかなぁ、って興味があるだけ
2020/02/20(木) 21:41:18.48ID:yQ1/Uz2n0
>>396
time shareing systemをそのままプリエンプティブと読んでいるのか?
TSSといえばダム端末多数台のマルチユーザーシステムのことなんだが
2020/02/20(木) 22:37:15.34ID:znahik0W0
今俺の興味はそこにはないからどうでもいいんだけどさ
https://www.google.com/search?q=time+sharing+system
その定義のみしかないわけじゃないみたいだよ
単に時分割の意味で使ってたよ
そう読み替えてくれ
2020/02/20(木) 23:22:33.12ID:zL7x3NPI0
>>397
> TSSといえばダム端末多数台のマルチユーザーシステムのことなんだが
知識が狭すぎる
ってか今時それしか思いつかないとか老害か?
2020/02/20(木) 23:28:24.92ID:yRc9LKeD0
>>399
定義が間違えているなら、正しい定義を示さないと
2020/02/21(金) 04:53:44.92ID:XhV4Z+GJ0
>>400
誰も間違えてるなんて言ってないし、一つ上のレスすら見てないのか?w
2020/02/21(金) 07:42:26.05ID:ZYgKzVvr0
>>396
マルチプロセッサでプリエンプティブはどっちだと思う?
当たり前だがTCASはユニでもマルチでも動くんだが
それでもTSSは並列なのか並行なのかって気になるのか?
どっちでもいいって主張には賛成しかねるな

>>398
「複数のユーザー」、「複数の利用者」と至る所に書いてあるね
ダム端末は確かに昔のことだが並行か並列かという話には関係ない

「頭がおかしい」、「老害」、「知ったか」
どうも前スレあたりから変なのが常駐してるようだな
うっかり構わないように気をつけなきゃ
403デフォルトの名無しさん (アウアウクー MM07-Z4Um)
垢版 |
2020/02/21(金) 08:05:59.84ID:UH7lBBhFM
パンじゃないご飯だ
2020/02/21(金) 10:36:09.68ID:cj7D2uI00
「頭がおかしい」、「老害」、「知ったか」

どうでも良いが、これを連呼したい奴が常住しているようだ
405デフォルトの名無しさん (アウアウウー Sae7-6k5J)
垢版 |
2020/02/21(金) 11:37:48.20ID:TKnLlA6xa
頭がおかしい知ったかのクルクルパーの老害ですが、呼びましたか?
2020/02/21(金) 12:23:48.46ID:GK8/JCh9M
>>402
> ダム端末は確かに昔のことだが並行か並列かという話には関係ない
だからその定義だと関係ないとしても、TSSの定義はそれだけじゃないでしょ
話の流れから見てダム端末とかチャネルとか言い出す方が狭すぎって話な

> どうも前スレあたりから変なのが常駐してるようだな
自己紹介乙w
2020/02/21(金) 12:35:39.58ID:7cfLckFcd
おまいらスレタイ
408デフォルトの名無しさん (アウアウウー Sae7-6k5J)
垢版 |
2020/02/21(金) 18:13:41.02ID:TKnLlA6xa
С言語
2020/02/21(金) 18:18:26.35ID:cj7D2uI00
C言語は 「頭がおかしい」、「老害」、「知ったか」 な人が使う言語

であってますか?
410デフォルトの名無しさん (アウアウウー Sae7-6k5J)
垢版 |
2020/02/21(金) 19:15:01.45ID:TKnLlA6xa
クルクルパーもよろしく
2020/02/21(金) 19:31:48.99ID:cj7D2uI00
8ビットCPUや16ビットでもリアルモードな頃は、
自己書換プログラム作ったりして楽しかったが
今は出来ないのでつまらない?出来ましたっけ?
2020/02/21(金) 19:34:44.69ID:GK8/JCh9M
>>404
> 「頭がおかしい」、「老害」、「知ったか」
> どうでも良いが、これを連呼したい奴が常住しているようだ

>>409
> C言語は 「頭がおかしい」、「老害」、「知ったか」 な人が使う言語
> であってますか?

わざわざ自己紹介ですか?
2020/02/21(金) 19:43:30.51ID:GK8/JCh9M
>>411
できるよ
キャッシュやプリフェッチキューとかも考えないといけないしOSによってはページの属性を変更したり色々手続きが面倒だけど
2020/02/21(金) 19:55:49.81ID:6D+TcuLq0
>>402
俺は使い分けない派だよ
2020/02/21(金) 20:12:45.02ID:TJeguecx0
並行に動作できるよう作ってあれば 並列に動かしたって平気だよ
ダイジョブダイジョブ
2020/02/21(金) 20:31:11.36ID:VaB1DjWv0
>>411
ほとんどのCPUは出来る
2020/02/21(金) 21:10:22.71ID:ZYgKzVvr0
効いてる効いてるw
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。