C言語なら俺に聞け 160

■ このスレッドは過去ログ倉庫に格納されています
2022/12/28(水) 10:40:30.02ID:PyoNDBFu0
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.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言語なら俺に聞け 159
https://mevius.5ch.net/test/read.cgi/tech/1659623547/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/03/09(木) 18:29:05.52ID:sK4pplDk0
精神年齢は?
2023/03/09(木) 18:33:49.17ID:sK4pplDk0
疑心暗鬼で個人攻撃
プログラムではなくてワッチョイを語る
世も末だな
2023/03/09(木) 20:35:29.98ID:pN9rkknD0
最悪の場合は事故さん(>>623)がなんか被害妄想を始めてるけど
俺の主張は>>626以降で出してるから後は興味ないんだわ
反論があるならすればいいがせめてこのスレと関係ある技術的な話をしてね
2023/03/09(木) 20:49:30.54ID:sK4pplDk0
組込みマイコンでは常識的なレジスタバンク切替やコンテキストスイッチングのことに触れずに
レジスタ退避や復帰でサイクル消費するとか言ってる時点で組込み開発の経験が無いんだろうな
ということは分かる
余程の簡易的なものを除けばメインと割込みでいちいちスタック経由でレジスタ退避するような
間抜けなマイコンは無いだろ
それはx86のような汎用CPUの構造だ
2023/03/09(木) 21:04:47.03ID:VZ2yRc9EM
似たような意見が出てきたので補足するとバンク切替なら大体2,3クロックでレジスタセット丸ごと切り替わるから割込みのオーバーヘッド自体は大した負荷にはならない
反面x86の様な大規模なレジスタ群は持てないのでそもそもの用途と構造が違う
2023/03/10(金) 06:51:36.78ID:wZRM+8gY0
ドヤってるけど大したこと言ってないな
2023/03/10(金) 07:19:22.02ID:gnQOQJYP0
そう言うなら後出しではなくて自分から大したこと語ってくれ
2023/03/10(金) 07:50:43.93ID:wZRM+8gY0
マルチで何タスクを並行で動かすのかによるだろ裏レジスタだけで済むかどうかは
2023/03/10(金) 07:56:30.74ID:wZRM+8gY0
無結合マルチCPUで楽々解決なんてこともあったな
2023/03/10(金) 07:57:42.45ID:gnQOQJYP0
知ってる範囲では8レジスタ×4バンクというのがあった
日本製(現在は事業撤退済)
2023/03/10(金) 08:08:15.26ID:gnQOQJYP0
そもそもマルチタスクのタイマ割込みの他に外部ポートからの多重割込みは
優先順位とレジスタ割当てをかなり慎重に検討するべき事項
並列処理の仕様はソフト設計の基本
2023/03/10(金) 08:24:52.79ID:wZRM+8gY0
並列じゃないソフト設計も普通にあるんだが
2023/03/10(金) 08:34:55.28ID:gnQOQJYP0
まあ外部割込みを一切禁止して常にポーリングでポート監視するシステムも無いことは無いが
ごく単純なパターンに限られるけどな
普通は外部からの入出力のトリガは割込みで受け付ける
2023/03/10(金) 08:41:29.45ID:wZRM+8gY0
そもそもタイミングがシビアなところはハードでできるのはそうするし
かなり特殊なケースにもFPGAの対応力はありがたい
2023/03/10(金) 08:47:32.61ID:gnQOQJYP0
そこまで行くとソフト設計者の範疇の外
2023/03/10(金) 08:50:32.68ID:wZRM+8gY0
ハードソフト協調設計をする中でソフトでどこまでやるかってこと
2023/03/10(金) 08:59:18.03ID:OFFvcl9SM
士農工商メカエレソフト
ソフト屋底辺の悲しさ
ハードソフト分担は大体は製品企画段階で決まる
メカ屋やエレキ(ハード屋)の尻拭いがソフト屋の仕事
2023/03/10(金) 09:06:33.88ID:+DlQ4xGFM
DSPあたりまではソフトでカバー出来るけどFPGAにまでなるとハードの仕事
2023/03/10(金) 09:17:19.56ID:wZRM+8gY0
CでROM焼きしてんのと
VerilogでFPGAやってんのは
遠くから見ても見分けがつかない
664デフォルトの名無しさん (アウアウエー Sae3-MJlW)
垢版 |
2023/03/10(金) 16:29:37.22ID:9R6reiLca
>>644
映画Winny観て来た
時代考証が微妙なところもあったが
ノスタルジー感じたい人は逝ってヨシ
665デフォルトの名無しさん (アウアウエー Sae3-MJlW)
垢版 |
2023/03/10(金) 16:33:31.81ID:9R6reiLca
ちなみに映画中に出て来たCのソースコードは
逆コンパイルしたようなコードで
変数名がめちゃくちゃだった
666デフォルトの名無しさん (アウアウエー Sae3-MJlW)
垢版 |
2023/03/10(金) 16:35:25.12ID:9R6reiLca
local_001 とか
local_666 みたいな
ずらずら並んでた
2023/03/10(金) 20:16:30.19ID:EGVo42nQ0
私を崇めよ
関数ポインタ配列が楽になる
2023/03/10(金) 23:25:55.00ID:edbNYall0
>>608
パン=スペルミア仮説ともいいますね
2023/03/11(土) 10:14:57.49ID:AyWAtMH4d
>>665
オープンソースの何かのを借りてくればいいのにと思うが
正当な目的外だからだめかな
2023/03/11(土) 10:33:06.84ID:VCVl4BMy0
実際に逆コンパイルされたものじゃないのか?
うろおぼえだが Winny の改造版 (?) を作ってた Lark 氏が逆コンパイルしたソースコードを放流していたような記憶がある。
671デフォルトの名無しさん (スププ Sd9a-cOGZ)
垢版 |
2023/03/11(土) 15:00:32.33ID:R1SsWCE7d
scanf関数もクセが強い
672デフォルトの名無しさん (ワッチョイ 7aad-JIpj)
垢版 |
2023/03/11(土) 18:34:55.65ID:Hy+SW7JA0
scanf の読み方は?
2023/03/11(土) 18:46:17.31ID:anM6KfKL0
すきゃんふ
2023/03/11(土) 19:06:51.49ID:HIr/E9uU0
すきゃんえふ
2023/03/11(土) 19:36:37.96ID:4mLQMbcb0
当時、京都府警がソースコードを押収したとか言ってなかったっけ
だとすると今でもあるのかな
2023/03/11(土) 20:41:12.44ID:0fOr9zyF0
そんな古いもんあんのかね
そもそも自分らの不手際で逮捕しなきゃいけない羽目になったんだから要らなくなったら即ポイ捨てだと思うけどね
2023/03/12(日) 07:29:50.79ID:WhaHkT9k0
すきゃんてぃ
2023/03/12(日) 12:04:15.69ID:8DcR0+gea
>>670
47氏本人が家宅捜査される場面で
編集中のソースコードって設定だから
本人がわざわざ逆コンパイルして使ってるのは可笑しい
仮に変数名自分で付けてたとしてもあんな名前でコード描いてたとは思えない
2023/03/12(日) 12:07:04.69ID:8DcR0+gea
>>672
SNMPを「すぬんぷ」って発音してる人が居て
会話中に「えっ???」ってなった
2023/03/12(日) 12:08:27.97ID:8DcR0+gea
あと別の人だけどswaponは「すわぽん」っていうのも
聴いてぎりぎり判るラインだったわ
2023/03/12(日) 12:10:31.51ID:8DcR0+gea
>>676
ほんそれ
京都府警のチョンボ情報漏れが先で逮捕に至ったのに
映画では逆の展開にされていて引いたわ
圧力掛かったんかね
2023/03/12(日) 12:11:07.17ID:zZ3L0xxp0
>>678
他のどんなコードを持ってきたとしても「あんなコードのはずがない」という突っ込みは受けそう。
2023/03/12(日) 12:23:09.80ID:/+cwNiL3d
京都府警りょうのキンタマ
2023/03/12(日) 14:34:58.81ID:zw46Mo410
使われているソースコードはおそらくこれということらしい。
https://github.com/loadletter/Winny-p2p

>>678
ちゃんと考証するならそりゃそうだが
重要でないところに小ネタを仕込むのもよくあることでしょ。
2023/03/12(日) 14:38:15.75ID:36zMid+Td
>>682
有り得るね
https://engawa.5ch.net/test/read.cgi/poverty/1377775593/
2023/03/13(月) 11:21:17.63ID:bF2IN6wDa
>あんなコードのはずがない

47氏死んでからの映画化ならではだな
2023/03/13(月) 15:53:24.36ID:gUMqyWwJd
ジョブスの映画はもっと酷かったぞ
ウォズがこれがアップルIだ!っつってジョブズに見せると画面にアスキーコード順に文字が出てくるだけ
ジョブズがオオスゲーって顔するんだけどw

もっともそこですでにBASICやゲームの画面が出てくるのもおかしいんだけどな
2023/03/13(月) 20:33:15.11ID:ZWncv4YS0
CALL -151
2023/03/13(月) 21:56:22.40ID:sKLW0uN10
>>687
脇役で出てくるPCの時代考証がおかしかったりしたあれか
690デフォルトの名無しさん (ワッチョイ 7aad-JIpj)
垢版 |
2023/03/14(火) 01:18:17.67ID:eWxvxvkk0
>>687
その映画見てないので分からないが、もしや Apple ][ ではなく Apple I のこと?
だったらワンボードマイコンなのでテレビ画面に文字が出るだけでも当時は凄い事だったと思うが。
Apple I が作られたのは1976年だしな。
2023/03/14(火) 03:06:45.91ID:TJZO9aGD0
もしやもクソも誰もApple2の話なんかしてないと思うがキミはいつもそんな調子なのかね
692デフォルトの名無しさん (スププ Sd9a-cOGZ)
垢版 |
2023/03/14(火) 09:46:34.46ID:tHJOYlO8d
ごく初歩的な質問です 変換して指定子を何にすればよいか教えてください

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int id;
char ss[80];

strcpy(ss,"123");
id = atoi(ss);
printf("%d\n", ss);
return 0;
}
を実行するとでデタラメな数字が出力されます。
変換して指定子をなににすればよいのでしょうか?
693デフォルトの名無しさん (スププ Sd9a-cOGZ)
垢版 |
2023/03/14(火) 09:57:04.49ID:tHJOYlO8d
692です 解けました 寝ぼけていたみたいです
2023/03/14(火) 10:05:55.26ID:3kN/fw0O0
%dとか%sとかの呼び方って、変換指定子、書式指定子、フォーマット指定子のどれがいいんすか?
695デフォルトの名無しさん (スププ Sd9a-cOGZ)
垢版 |
2023/03/14(火) 10:12:18.85ID:tHJOYlO8d
ある本によると、たんなる、「変換仕様」や「出力変換仕様」となってます
2023/03/14(火) 10:34:18.75ID:3kN/fw0O0
printfで出力変換仕様ならscanfでは入力変換仕様になりそうっすね
2023/03/14(火) 10:38:03.93ID:3kN/fw0O0
英語だとformat specifierなんすね
直訳ならformat→フォーマットか書式、specifier→指定子か仕様って感じすか
698デフォルトの名無しさん (ワイーワ2 FF62-hM7q)
垢版 |
2023/03/14(火) 11:19:53.02ID:VNqhYyU8F
>>690
>ワンボードマイコンなのでテレビ画面に文字が出るだけでも当時は凄い事

ほんそれ
現役体験世代しか持ち得ない臨場感ってこう言うもんよ
699デフォルトの名無しさん (ワイーワ2 FF62-hM7q)
垢版 |
2023/03/14(火) 11:22:04.60ID:VNqhYyU8F
>>692-693
いつのC使ってるのかしらんけど
警告出ないんだっけ
700デフォルトの名無しさん (スププ Sd9a-cOGZ)
垢版 |
2023/03/14(火) 13:01:28.77ID:dwJIt/jSd
>>699 警告出てました vscodeだと警告なしでバカ数字だけ出力される設定です
701デフォルトの名無しさん (アウアウエー Sa22-MAiJ)
垢版 |
2023/03/14(火) 13:07:48.27ID:ZglUMoKma
にぎりっ屁
2023/03/14(火) 18:59:23.39ID:4eLUupfkd
>>692
なんとこのコード!
直値で領域確保など、神をも恐れぬ傍若無人
悪魔をも恐れぬ愚策の極み
とても合格点は出せない
2023/03/14(火) 19:27:10.55ID:1SjvDtDOM
コンパイル時にエラーにならない可変個引数が悪い
ただ警告は出てるけどね
>>692はそれを無視してたんだろう
Cコンパイラーの警告は実質エラーだからな
2023/03/14(火) 22:18:52.69ID:xPBygAZk0
> 警告は実質エラー

自分の頭で考えることを放棄したクルクルパーwww
2023/03/15(水) 00:47:49.02ID:q5LCzWGQM
>>704
仕事でC使ってない素人は黙ってろよw
2023/03/15(水) 00:50:40.37ID:eS/lJ3n/0
ワイは車載プログラマーだがwarningだらけやな
2023/03/15(水) 00:51:38.54ID:q5LCzWGQM
>>704
こんな事言うやついるんだなw
そりゃ日本の競争力も低下するわけだ…
2023/03/15(水) 06:54:14.38ID:MuZQ71LVd
>>704
「警告ね、ハイハイオッケー!」
思考放棄だろこれw
2023/03/15(水) 07:36:21.87ID:T1RUme5O0
はははは、悔しそうだなw
2023/03/15(水) 08:41:20.34ID:MuZQ71LVd
うわぁ…
2023/03/15(水) 10:49:56.85ID:U534XRL10
JAXAのロケットが飛ばない理由はこれかも
2023/03/15(水) 12:28:05.63ID:0cl6W22rr
ロケットの失敗は中抜きで必要なところにお金がまわらなかったからです
2023/03/15(水) 13:20:32.86ID:CD47sW3td
>>712
へ?ロケットも元請けはデン2?
2023/03/15(水) 13:31:23.12ID:MuZQ71LVd
うろ覚えのネット知識同志で問答するのはやめるんだ
ゴチャゴチャになるぞw
2023/03/15(水) 13:38:30.28ID:PyY+66E5M
請け負ったのは三菱重工業だが、国産ジェットも失敗してるからな…
もうロケットはドラマの中でしか飛ばないw
2023/03/15(水) 14:19:05.65ID:ouX7yS+u0
>>694
d や s の部分が変換指定子 (conversion specifier)。
%d や %s 、これに精度やフラグや長さ修飾子まで含めた実引数ひとつに対応する指定が変換指定 (conversion specification)。
更にこれらを含む文字列全体 (printf の第一引数や fprintf の第二引数など) が書式 (format)。
書式に含まれる普通の文字か変換指定のことを指令 (directive) という。
書式指定子 (format specifier) という用語は何を指すのか明確な説明がないのだけれど
形式としては変換指定から % を除いたものになってる。

以上の用語は JIS に基づくが K&R 第二版日本語版を見てみると
変換指定子ではなく変換文字と書かれていたり
変換指定ではなく変換仕様になっていたりする。

JIS は (ISO の規格の) 良い訳というわけではないけど
納得しようがしまいがとりあえず統一するのが規格ってものの役割なんで
より「正式」であることを指向するなら JIS に合わせるべきだと思う。
(他の用語が間違いというわけではない。)
2023/03/15(水) 14:45:10.43ID:T1RUme5O0
腹いせのつもりが
またしても恥かいたなw
2023/03/15(水) 15:41:59.18ID:IBd2LSQOd
>>716
翻訳入れた時点で訳者に依存する2次情報だからな
他国翻訳の後出し規格で特に用語に関しては参考に値しないよ
2023/03/15(水) 15:50:17.02ID:T1RUme5O0
いやJISは一次情報だよ
何かを参考にしたとは書いてあるけどね
公文書としての責任は負うわけで
2023/03/15(水) 19:38:30.28ID:BZs4LmWfM
JIS X3010は翻訳じゃなくて、プログラミング言語Cという規格だな
ま、ISOを基礎にしてるとは書いてあるがな
本質的な部分で違いがあるのかは分からない(多分無いだろうけど、有っても不思議ではない)
2023/03/15(水) 20:45:39.37ID:ouX7yS+u0
JIS X3010:2003 内のサンプルコードのインデントが 7 なのはどういう意味があるんだろうな?
どうでもいいからこそあえて ISO と違える理由も思いつかない。
2023/03/16(木) 10:34:04.56ID:183yxeev0
>>692
printf("%d\n", ss);



printf("%d\n", id);
2023/03/16(木) 20:52:18.53ID:awXg4DCe0
VScodeで下記のようなMakefile作ってターミナル(PowerShell)で実行したのですが
ソースファイルを拾ってくれないです。
Makefileと同じディレクトリにsrcフォルダとその中にソースがあります。
SRC_DIRS = src
TEST := $(shell find $(SRC_DIRS) -name *.c)
test:
echo $(TEST)
エラーは「ファイルが見つかりません - *.c」と出ますがfindは使えないのですか?
2023/03/17(金) 04:22:40.28ID:1OmGmSd00
>>723
nmake派だから自信ないが、ファイル内文字列検索の方のfindコマンドが呼ばれてるように見える、当たり前だけど存在しないファイルに対して文字列検索はできないので

引数的に多分findでなくgciが望みのコマンドでは
gci -file -inc *.cとかそんな感じでどうよ
725デフォルトの名無しさん (ワッチョイ a546-QPGK)
垢版 |
2023/03/17(金) 05:56:28.46ID:F2H2paQ20
>>723
PowerShellは知らないが、Unixだと括る。
find $(SRC_DIRS) -name *.c

find $(SRC_DIRS) -name '*.c'
2023/03/17(金) 07:48:39.66ID:FEpWoYhBd
findなんて使わなくても

SRC_DIRS = src
TEST := $(wildcard $(SRC_DIRS)/*.c)

でいいだろ
つーかC言語の質問じゃねえw
2023/03/17(金) 08:34:07.50ID:FEpWoYhBd
頭にsrc/がつくのが嫌なら
TEST := $(nodir $(wildcard $(SRC_DIRS)/*.c))
2023/03/17(金) 11:21:24.24ID:SxK7dSEV0
うろ覚えだけど会社の入社前研修で
「UNIX OSでカレントにある*.txtファイルすべてをxxx(忘れた)するシェルスクリプトを作成しろ」
って課題出され、DOSのワイルドカードはアプリ内で処理するものだったんで
ファイル一覧のテキストファイル作ってそこから1行づつ読み込んで
".txt\n"って文字列見つけたら新たにスクリプトファイル作って実行するっての作った。

まさかシェル自体にワイルドカード処理する機能あるとは思ってなかった。
2023/03/17(金) 11:53:15.99ID:XLm6gsUd0
>>726
C の質問ではないが Make の質問をするのに適切に思えるようなスレってなくない?
俺も困ったことがある。 (そのときは Cygwin スレかどっかで質問したけど過疎すぎて返答が付かなかった……)

C の話題ってのは言語仕様の話題だけってわけではなく開発環境の事情も含むだろうし
make も C の開発環境の一部という解釈で良いと思う。
2023/03/17(金) 12:38:50.70ID:3wI9Dhzj0
なんじゃそりゃ
汎用の質問スレがあんだからそっちでいいよ
2023/03/17(金) 13:26:15.13ID:dYvRZpJb0
はたらいたらmake
2023/03/17(金) 13:29:23.63ID:Oo1zHgPh0
make
https://mevius.5ch.net/test/read.cgi/unix/1079538957/

最終レスが2018で、ボット臭いのを除くと2016だけど。
2023/03/17(金) 13:56:33.41ID:GNeva6hg0
makeスレは昔から過疎スレだったよ
個人的にはCに関係するmakeの話はここでもいい気もするが
>>723みたいな環境や処理系すら書かないアホは相手したくないね
やはり専用スレだな
2023/03/17(金) 14:16:14.65ID:gUpaepT/d
可変個引数なのか、はたまた可変長ひきすうなのか
2023/03/17(金) 14:28:38.47ID:Jukv8C3G0
6.7.5.3 関数宣言子(関数原型を含む)
並びの最後が省略記号(, ...)の場合,そのコンマ以降の実引数の
個数及び型に関する情報はない(123)。

(123) <stdarg.h>ヘッダ(7.15 参照)で定義されるマクロを使えば,
省略記号に対応する引数へのアクセスが可能となる。

7.15 可変個数の実引数<stdarg.h> 
2023/03/17(金) 15:06:41.64ID:k0Wz885y0
>>728
DOSをちゃんと使ったことないのだが、そバッチファイルとかいうやつの中では
ワイルドカードを使えるのとちがうの?
2023/03/17(金) 15:07:17.42ID:k0Wz885y0
そ ってなんだよw
2023/03/17(金) 15:09:54.39ID:1OmGmSd00
pwshは記法がmakeと被りまくっててエスケープ地獄で辛いな
特に@args | ...とか-split "a b c d "| ...のようなイディオムが

ビルトインコマンドの解決も時々失敗する怪しい挙動なので(g)makeをstraceしてみた
シェルを明示的に指定しても、makeがレシピをスキャンして展開の必要しと判定すると直接exec/CreateProcessを呼んでる様子
要するに実装の機嫌次第ですね
2023/03/17(金) 16:26:27.08ID:Jukv8C3G0
>>737
「の」が抜けた脱字だろ
2023/03/17(金) 16:40:16.98ID:6pq6iSnCd
>>736
じゃあDOSをちゃんと使え
以上

というか>>728が言ってるんはDOSではコマンドラインはそのままコマンドに渡されてコマンド側がワイルドカード展開しなければならないって事だと思うけど
for文を使えばバッチファイル中でワイルドカード展開できるけどな
2023/03/17(金) 19:53:17.28ID:k0Wz885y0
>>740
> じゃあDOSをちゃんと使え
お断りしますw

>というか>>728が言ってるんはDOSではコマンドラインはそのままコマンドに渡されてコマンド側がワイルドカード展開しなければならないって事だと思うけど

そんな風になってるんだ。逆に目からウロコw

考えてみれば、コマンド引数は常にファイル(パス)とは限らないのだから
コマンドインタープリタ側でデフォでファイル名展開を使わない、という態度もアリなのかな
2023/03/17(金) 21:22:13.62ID:ap5J/Una0
「ファイルが見つかりません - *.c」

今の話題はこれのことだろう
743デフォルトの名無しさん (スップ Sd7a-s0vD)
垢版 |
2023/03/17(金) 22:10:24.98ID:Pco9qL75d
ワイルドカードで受け取ってアプリ内でいい感じに展開するのは結構負担大きいんだよな

MSDOSのシェル側の負担を減らしたいというのは発想としてはアリなんだけど、
ハードの性能が上がった現代では時代遅れになってしまった
2023/03/18(土) 00:02:14.45ID:W6y4Yh40d
>>742
言えることは
普通にビルドで必要な機能は揃ってるからmakeの組み込み関数を使え
shellは最後の手段と思え
どこで展開が起こってるかエスケープ文字が食われているかを探してる時間のムダだ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況