C言語なら俺に聞け 148

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウカー Sacf-slpW)
垢版 |
2018/09/19(水) 17:56:50.83ID:XSTNMnDwa
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言語なら俺に聞け 147
http://mevius.5ch.net/test/read.cgi/tech/1534430162/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2018/09/26(水) 10:17:13.10ID:Ozpnqin20
>>297
フルパスである必要はない
そんなのはwhichで出るから重複もいいとこ
2018/09/26(水) 13:07:42.63ID:tnf9UX1gM
好きか嫌いかより規格で語れよ!!
2018/09/26(水) 13:15:13.67ID:GcxNqKYyM
で?
304デフォルトの名無しさん (アウアウカー Sae9-rLjT)
垢版 |
2018/09/26(水) 17:10:26.81ID:dsR47lxwa
>>301
argv[0] が "-" だったらどうするよ。
2018/09/26(水) 17:10:59.41ID:p8TYnMT50
まあやっぱり#include "file.txt"なんて常人は考えねーよなw
いろいろすまんかった。
2018/09/26(水) 17:23:34.23ID:T1RBGvug0
>>305
使い道はあるよ
多量のマクロ定義リストを読ませるとか
2018/09/26(水) 17:27:31.74ID:lDpRvfaq0
ビットマップを本体のコードに埋め込むのに

char data[] = {
#include "bitdata.inl"
};

とかやった。 bitdata.inl は別のソフトで生成
2018/09/26(水) 17:33:26.10ID:lncCaYQKM
>>307
disるつもりはないし状況も分からんのだけど、バイナリデータをコードに埋め込んでコンパイルかけるのは筋が悪いような?
309デフォルトの名無しさん (アウアウカー Sae9-rLjT)
垢版 |
2018/09/26(水) 17:35:54.43ID:dsR47lxwa
XPMやXBMみたいなテキストなんだろ
2018/09/26(水) 17:36:31.54ID:cOtTFh6NM
>>305
file.txt を C の文字列にした file.c なり file.h なりを作る簡単なスクリプトなり書いて、make ファイルでそれが動いて取り込まれるようにすりゃいいんじゃね。

usage:
-h help
-u unko

みたいなテキストを
#define USAGE "¥
usage:¥n¥
-h help¥n¥
-u unko ¥n¥
"

みたいな define か何かにすればいい。
2018/09/26(水) 17:37:28.54ID:T1RBGvug0
大量のテーブルデータをマクロ型式で記述して
includeの直前でマクロを望む内容で定義すると便利
2018/09/26(水) 17:40:44.37ID:lDpRvfaq0
>>308
(Windowsの話)
ライブラリを作ってるときに、そこで使いたかったんだが(ImageList)
リソースというわけにもいかず、ファイルを読み込むのもライブラリ化の意図からずれるし で
埋め込んだのよ

簡単に肥大化するから筋が悪いのは半分承知
2018/09/26(水) 17:41:52.02ID:lDpRvfaq0
ああ 件のファイルは 0x○○, 0x○○, … なテキストのファイルです
2018/09/26(水) 17:50:39.66ID:lncCaYQKM
>>312
ああ、なるほど。
まぁ俺も組み込みでビルド番号を自動生成してソースにincludeで組み込むこともあるので人のことは言えないけど。
315デフォルトの名無しさん (ワッチョイ f1e9-7de5)
垢版 |
2018/09/26(水) 20:19:36.31ID:I4Gvy1+q0
WindowsAPIを機械語にするソフトを機械語にするソフトを機械語にするソフトを…
って考えたらまた頭が混乱してしまいました…
2018/09/26(水) 20:25:14.53ID:07am72nua
APIとはインターフェースである。
見えるのは表面だけで中身なんてどうなってるかわからない。
317デフォルトの名無しさん (ワッチョイ f1e9-7de5)
垢版 |
2018/09/26(水) 20:29:26.48ID:I4Gvy1+q0
CのコンパイラはWinAPIでしかかけないってことですか?
2018/09/26(水) 20:41:32.38ID:zSos1f990
Advanced windows買って読め じゃ乱暴か…
319デフォルトの名無しさん (アウアウカー Sae9-rLjT)
垢版 |
2018/09/26(水) 20:43:53.50ID:MrbR9bENa
>>315
まずはWindowsAPIとは何なのかを調べろ。話はそれからだ。
2018/09/26(水) 20:45:37.17ID:p8TYnMT50
>>310
にゃるほど。
まあ それでもいいんだけど,結局変換の手間があるんだよね。
しかし一度でも.hか.cファイルを作ったらあとはそれを#includeすれば
複数のファイルに使えるってのは有用かもしれん。
Usageでは↑複数には適用できないけど,ライセンスとか。
2018/09/26(水) 21:08:33.17ID:07am72nua
Cのコンパイラがpythonで書かれていようと俺は一向に構わんがインターフェースでどうやって書くのかは知らない
2018/09/26(水) 21:29:52.27ID:h9A6ffHl0
>>315
最初のコンパイラは人間が手入力でバイナリを書いた
323デフォルトの名無しさん (ワッチョイ f1e9-7de5)
垢版 |
2018/09/26(水) 21:40:12.24ID:I4Gvy1+q0
>>321
CをコンパイルするのはWindowsAPIって昨日聞きましたが?
C自体では動かないのだからWindowsAPIでコンパイルするのでは?
2018/09/26(水) 21:45:31.26ID:T1RBGvug0
>>323
誰もそんな事言って無いだろう

探したけどないぞ、そんなの
2018/09/26(水) 21:48:20.48ID:Jt0rVGX10
いい加減、釣りだと気づけよw
てかみんな気付いた上で相手してるのか。
2018/09/26(水) 21:49:37.93ID:h9A6ffHl0
>>323
Winapiでコンパイルじゃなくてwinapiとリンクと間違いだったって言ったやん
2018/09/26(水) 22:07:50.72ID:MrhohV/JM
>>322
流石に最初のコンパイラはアセンブリ言語だろ
最初のアセンブラはバイナリ入力しただろうけど
328デフォルトの名無しさん (ワッチョイ f1e9-7de5)
垢版 |
2018/09/26(水) 22:09:29.37ID:I4Gvy1+q0
コンパイラはWindowsAPIの実装を知ってる人じゃないと作れないってことですか?
よくコンパイラ入門なんて本あるけど作れるんでしょうか?
2018/09/26(水) 22:18:36.87ID:T1RBGvug0
WindowsAPIは直接コンパイラとは関係ない
2018/09/26(水) 22:22:27.92ID:Ozpnqin20
>>304
さあねえ
どうしろって言いたいの?
331デフォルトの名無しさん (ワッチョイ f1e9-7de5)
垢版 |
2018/09/26(水) 22:33:54.33ID:I4Gvy1+q0
WinAPIはインターフェースだけを提供していて実装は分からない
つまりコンパイラを考える人はMicrosoftの開発者だけってことですか?
それだとコンパイラ入門ってどういうことなんでしょうか?
2018/09/26(水) 22:40:30.36ID:07am72nua
1950年代にもうそれなりのアセンブリあるんだからすごいよね。
みんな頭いいんだな。
2018/09/26(水) 22:41:00.36ID:T1RBGvug0
>>331
君はコンパイラを使いたいのか
それともコンパイラを作りたいのか
334デフォルトの名無しさん (ワッチョイ f1e9-7de5)
垢版 |
2018/09/26(水) 22:44:12.95ID:I4Gvy1+q0
すいません
正直話すと
レポートってのは2年のとき落とした履修で
今は卒論でコンパイラ作りたいんです…
つまりダブルということになります…
2018/09/26(水) 22:48:53.63ID:cOtTFh6NM
>>334
とりあえずアセンブラでも作ってみたら。
コンパイラ作るよりずっと簡単だけど、いろいろ学べることは多いと思うよ。
2018/09/26(水) 22:52:02.96ID:DUFIzm4n0
コンパイラ作るだけならCのソースからアセンブリ言語に変換するプログラムを書くだけなのでWinAPIは関係ない話
2018/09/26(水) 22:55:42.96ID:h9A6ffHl0
>>327
アセンブラも広義ではコンパイラだろ
こまけえな
2018/09/26(水) 23:00:17.80ID:07am72nua
速度とか高級低級云々の話はインタプリタを持ち出した方が良かったのかね。
抽象的な機能を提供するという点ではAPIも近いところはあるね。
339デフォルトの名無しさん (ワッチョイ f1e9-7de5)
垢版 |
2018/09/26(水) 23:04:55.14ID:I4Gvy1+q0
>>336
例えばprintf関数のアセンブリは
どのOSだろうが一緒なんですか?
2018/09/26(水) 23:05:53.49ID:s3sau8dm0
>>337
> アセンブラも広義ではコンパイラだろ
全然違うしw
雑すぎるわ
2018/09/26(水) 23:07:11.91ID:h9A6ffHl0
>>340
うるせえよ
意味伝わってんのにネチネチ粘着すんなよダリい奴だな
2018/09/26(水) 23:10:27.33ID:h9A6ffHl0
>>339
違うよ
OS毎にprintfのバイナリが用意されてて
おまえが書いたコードをコンパイルしてからそいつとリンクして繋げるだけ
2018/09/26(水) 23:12:49.78ID:P+3GV8ah0
>>284
ここに書いた

バイナリ・機械語は、各CPU に固有のもの。
intel・AT&T では逆に書く

開発者は、各CPU 毎にプログラミングできないから、
仮想アセンブラのLLVM ができた
344デフォルトの名無しさん (ワッチョイ f1e9-7de5)
垢版 |
2018/09/26(水) 23:15:29.87ID:I4Gvy1+q0
>>342
ちょっと複数のPC勝ってアセンブリ確認してみますw
例えばWindows98とWindowsMEとかでも厳密に言えば
アセンブリが違うかもしれないってことですよね
2018/09/26(水) 23:17:41.51ID:h9A6ffHl0

2018/09/26(水) 23:23:11.54ID:VlfJEAqXa
>>334
コンパイラがそもそもどんな物かも分かってないんだから、コンパイラを作ろうなんて考える前に、コンパイラを使ってごく普通の簡単なアプリケーションプログラムを作って何をやってるのか理解しなよ。
studioやmainがおまじないだとか言ってるレベルで無謀過ぎるぞ。
2018/09/26(水) 23:24:21.49ID:8QQNIK9ea
stdioの誤記です
348デフォルトの名無しさん (ワッチョイ f1e9-7de5)
垢版 |
2018/09/26(水) 23:29:31.07ID:I4Gvy1+q0
>>346
なんか分かりました
コンパイラっていうのは9割型共通のルールのpushやmoveでかけるアセンブラ
をOS向きにさらに改良するってことでしょうか…
自分でprintfのアセンブラを書いてコマンドプロンプトで実行してみます
さて何行になるやらですが
2018/09/26(水) 23:39:57.62ID:tnf9UX1gM
こんなタイミングでIDって変わるもんなの
350デフォルトの名無しさん (ワッチョイ c980-yqSl)
垢版 |
2018/09/26(水) 23:44:08.19ID:nZ7x0XR+0
オマエ、分かってて
このスレの低学歴知恵遅れをおちょくってるだろ
しかもちゃんと罠もしかけてる

オマエが思ったとおりこのスレの低学歴知恵遅れはちゃんと答えれない

まずこのこのスレの低学歴知恵遅れは
実行モジュールがどういったもんか分かってないからな
351デフォルトの名無しさん (ワッチョイ c980-yqSl)
垢版 |
2018/09/26(水) 23:49:25.75ID:nZ7x0XR+0
レスをみても分かるとおり
低学歴知恵遅れはなにも分かってないくせに
分かってるふりするのが精一杯

低学歴知恵遅れ特有のレスをしている

オマエは低学歴知恵遅れを陰湿にいじめてる
2018/09/26(水) 23:59:09.60ID:P+3GV8ah0
そもそも、Windows だけでも、64/32 ビットCPU で、
CPU の命令の、サイズ・種類などが異なる

i3, i5, i7 など高額・高機能になるほど、
3D・動画のコーデック命令なども付け加えられているから、処理速度は速くなる

そういう命令がないCPU では、ソフトウェアで実行されるから、すごく遅い
353デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/09/27(木) 00:12:48.47ID:pq96CSzd0
きっとなこのスレの低学歴知恵遅れは
PEフォーマット、EXEフォーマットとかも知らない
Windows APIがDLLの関数であることも分かってない

この低学歴知恵遅れは
コンパイルしたソースをマシンコードにしたものだけが格納されてると思ってる
レスみればほぼ間違いない
2018/09/27(木) 00:16:16.06ID:GWQb325r0
まーた半角クンが湧いちゃったじゃないか。
変な正確でも,言うことが正しければいいんだが,
こいつの話は間違った無根拠なものばっかりだからなぁ……。
355デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/09/27(木) 00:17:47.16ID:pq96CSzd0
じゃあオマエが質問にオマエが答えてみ
オレは常にスキがないほどカンペキなレスしか書いてないからな
356デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/09/27(木) 00:18:53.88ID:pq96CSzd0
まずこのスレにいるような程度のヤツラではムリ
はっきりといえる
357デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/09/27(木) 00:21:06.23ID:pq96CSzd0
こういとこでもな
低学歴知恵遅れであることは隠せない
2018/09/27(木) 00:55:00.60ID:fxNPrOWH0
>>341
バカはこれだから w
359デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/09/27(木) 01:21:44.64ID:pq96CSzd0
質問してるヤツの質問が
このスレにいるような低学歴知恵遅れには高度すぎた

しょうがない
2018/09/27(木) 02:26:11.63ID:mRs+7RE20
>>325
2018/09/27(木) 09:17:03.76ID:Zeo03I1R0
> なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?

たぶん俺じゃないってとぼけるだろうな
2018/09/27(木) 11:29:18.01ID:XEXpxXRW0
>>353
それについては
>>249にも書いてるようなOSに対応したの部分にその意味も含めたつもりです。少なくともオレはそれを意識して書いた
363デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/09/27(木) 12:40:10.03ID:U92lHhY6a
>>330
この話の元は>>292なのでどうすんのかなと思ってな。
2018/09/27(木) 13:02:52.87ID:rIrQdVdgM
法的(笑)
2018/09/27(木) 16:30:52.70ID:Zeo03I1R0
>>363
おまえ304か?
strcmp(argv[0], "-") == 0のときに
printf("%s", argv[0]); を実行した場合は
- と出力されるのが何かまずいのかと聞いているんだ
答えてくれ
2018/09/27(木) 16:57:20.64ID:WzI0x/ML0
"-"のときなら全然まずくないけど、1MBとか1GBくらいの0無しバイナリだと
ちょっと不機嫌になるよね
2018/09/27(木) 17:34:58.79ID:GWQb325r0
ファイル名を使った攻撃とかできそう
2018/09/27(木) 18:22:43.20ID:mzM5OoPla
>>346
スタジオドットエイチって覚えてる人にありがちな間違いだな
369デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/09/27(木) 18:25:58.92ID:0MoXCxtia
>>365
usageの意味がなくなるのでは?
そんなもん気にしないってなら別にいいんだけどね。
2018/09/27(木) 18:52:27.42ID:v62G+4TD6
ADI法(ノイマン境界条件)って具体的に何をすればいいのかさっぱりわからない
そもそも2次元領域(0,L)^2での計算ってCプログラム上でどう構成すればいいんだろう…1次元はなんとかなったけど
2018/09/27(木) 18:54:30.86ID:v62G+4TD6
と質問したかったけど数学寄りの話かな、スレチだったらすまん
372デフォルトの名無しさん (ワッチョイ 97e9-DIZe)
垢版 |
2018/09/27(木) 19:30:25.34ID:+bSAjOWL0
今日アセンブリを作ってコマンドプロンプトで動かしてみましたが無反応です
moveとかのアセンブリはコマンドプロンプトは読み込めないんですか?
373デフォルトの名無しさん (ササクッテロル Sp4b-MQF+)
垢版 |
2018/09/27(木) 19:30:51.34ID:etRlHd3dp
https://i.imgur.com/Pg8FdUT.jpg


Helloしか出力されないんですけど、どうすれば治りますか?
2018/09/27(木) 19:35:33.53ID:Q55DNguR0
>>373
端末が受け取ってないだけとか?
printf("%lf\n", pi/a);
にすれば出力される可能性が高い。

動作環境特有の話かもな
2018/09/27(木) 19:39:41.84ID:etRlHd3dp
>>374
返事ありがとうございます。
結果は変わりませんでした。
環境はターミナルです。
2018/09/27(木) 19:45:28.08ID:Q55DNguR0
print だからフォーマット指示は %f か
他に理由がおもいうかばにゃい
2018/09/27(木) 19:52:24.14ID:YhkMlANsp
z=pi/aとおいてzを出力させるんじゃダメなのか
2018/09/27(木) 19:58:12.16ID:ul07XbU+a
lとoの間辺りに%f置いてみれば
2018/09/27(木) 20:05:05.17ID:rwW0e8CF0
>>375
問題なさそうなんだけどね。

https://ideone.com/kZ5gKx
2018/09/27(木) 20:11:45.43ID:WRRv4FYM0
printf("%lf¥n",pi/a); ってやってみたら?
2018/09/27(木) 20:12:24.71ID:3JRfbUkA0
gdbか何かで止まってるって落ちはないよね?
2018/09/27(木) 20:12:41.87ID:etRlHd3dp
すみません。今電車の中なんで、家に帰ったら全方法を試します。
2018/09/27(木) 20:13:00.51ID:etRlHd3dp
皆さんアドバイスありがとうございます。
2018/09/27(木) 20:13:49.60ID:zXUlvxZ1M
だれもMac持ってねぇのかwww
いや俺もだけどww
2018/09/27(木) 20:15:03.16ID:zXUlvxZ1M
連投ですまんがまさかコードだけ更新してコンパイルし直してないとか
初学者あるある
2018/09/27(木) 20:17:54.71ID:Q55DNguR0
どこから Macの環境に限定できるのか俺にはよくわからん
2018/09/27(木) 20:22:16.63ID:rwW0e8CF0
>>386
左上の黄色と緑の丸
2018/09/27(木) 20:23:07.84ID:rwW0e8CF0
Macでやっても出力は同じだよ
2018/09/27(木) 20:23:31.86ID:3JRfbUkA0
>>385
きっとソレダ
390デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/09/27(木) 20:28:13.50ID:0MoXCxtia
左上の黄色と緑の点かな?
2018/09/27(木) 20:28:23.35ID:Q55DNguR0
>>388
ですよねー
392デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/09/27(木) 20:29:31.61ID:0MoXCxtia
リロードせずにゆっくり書いてたらほとんど同じ書き込みが既にされていたorz
393デフォルトの名無しさん (ワッチョイ 5780-q1nr)
垢版 |
2018/09/27(木) 21:28:23.17ID:pq96CSzd0
最後に
fflush(stdout);
と書けばきっと出力される

やってみ
2018/09/27(木) 21:32:36.13ID:Zeo03I1R0
>>366
全然意味がわからない
お前は何を言っているんだ?

>>369
なぜ意味がなくなるんだ?
2018/09/27(木) 23:48:28.04ID:RQl7S0Gm0
来たよーム板に。
2018/09/28(金) 08:16:40.85ID:TLhVFQk50
sed -e 's/.*/"&\\n"/' < USAGE > USAGE.c
として
#include "USAGE.c"
397デフォルトの名無しさん (アウアウカー Saab-XaUO)
垢版 |
2018/09/28(金) 09:31:20.28ID:ctzrbTkBa
>>394
だってコマンドの使い方の説明にならないじゃん。
2018/09/28(金) 10:24:36.39ID:RVKB6eOl0
>>397
- という語句は予約されていると言いたいのか?
2018/09/28(金) 13:21:05.27ID:TLhVFQk50
somecmdというアプリケーションがあったとして
Usage: somecmd [--option] <file>...
こういう出力を
printf("Usage: %s [--option] <file>...\n", argv[0]);
まあこういう感じ(もうちょっと変数やらをはさむかも知れんが)で出力するときに
argv[0]がsomecmdじゃない場合がけっこうあるってことじゃないの?
そしてそういう場合にUsage: ...の形式が壊れるんじゃないか,と。
2018/09/28(金) 13:22:39.05ID:X1M2oU/e0
>>399
結構あるって、例えばどういう操作をする場合だろうか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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