[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/12 01:51 / Filesize : 317 KB / Number-of Response : 1019
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 147



1 名前:デフォルトの名無しさん [2018/08/16(木) 23:36:02.22 ID:fOCSKLtw.net]
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

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

C99
www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


C言語なら俺に聞け 146
https://mevius.5ch.net/test/read.cgi/tech/1525031257/

856 名前:デフォルトの名無しさん mailto:sage [2018/09/08(土) 18:44:21.19 ID:+lRq1NsW.net]
タネンバウム先生の本でしょ
すごい弟子を育てた伝説の師匠

857 名前:デフォルトの名無しさん mailto:sage [2018/09/08(土) 18:49:46.85 ID:kiLcyFGE.net]
なにそれ、すごい面白そう!
アラサーだけどまだまだ青二才だしとっても勉強になります!

858 名前:デフォルトの名無しさん mailto:sage [2018/09/08(土) 19:31:07.27 ID:AeS6DVc8.net]
>>841
>>837にレス頼む

859 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 05:27:49.39 ID:pVz5FNGY.net]
>>840
ありがとうございます!
これでUnicodeが古い環境で心置きなく使えますわ。

860 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 14:54:16.40 ID:/XE3HNn6.net]
ここのスレの人はValgrindは
使っているんだろうか。
メモリリークとか考えれば
ぜひ使うべきツールだと思う。
https://qiita.com/tjun/items/e9d2f7da3c94eb0240d8

861 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 15:31:42.46 ID:pIlBTOwT.net]
便利だよね
ただ役に立ってるときはクソコードを触ってるときでもあると思う

862 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 15:44:39.72 ID:DwszjCT1.net]
変数中の "1" のビット数を数える効率的方法ありますか?
aが32ビットとして
for (i = 0; i < 32; i++) {
j = j + a & 1;
a = a >> 1;
}
みたいに1ビットずつカウントするしかないでしょうか
あるいは、8bitとかで区切ってテーブルを引いて加算とかでしょうか(16ビットや32ビットのテーブルは現実的でないので)

863 名前:デフォルトの名無しさん [2018/09/09(日) 15:50:52.78 ID:V1LakR3i.net]
a=(a&0a55555555)+(a>>1&0a55555555);
a=(a&0a33333333)+(a>>2&0a33333333);
a=(a&0a0F0F0F0F)+(a>>4&0a0F0F0F0F);
a=(a&0a00FF00FF)+(a>>8&0a00FF00FF);
a=(a&0a0000FFFF)+(a>>16&0a0000FFFF);

864 名前:デフォルトの名無しさん [2018/09/09(日) 15:53:41.89 ID:V1LakR3i.net]
a = (a & 0x55555555) + (a >> 1 & 0x55555555);
a = (a & 0x33333333) + (a >> 2 & 0x33333333);
a = (a & 0x0F0F0F0F) + (a >> 4 & 0x0F0F0F0F);
a = (a & 0x00FF00FF) + (a >> 8 & 0x00FF00FF);
a = (a & 0x0000FFFF) + (a >> 16 & 0x0000FFFF);



865 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 16:07:17.49 ID:TAQT5wBe.net]
32ビットだしその書き方良くないと思います

866 名前:デフォルトの名無しさん [2018/09/09(日) 16:54:40.77 ID:V1LakR3i.net]
https://ideone.com/FGqs1S
なにも問題ない
レスをコピペで普通に動く

アホがいちいち車輪の再発明するよりとりあえず↓コレ使っとけば間違いない
gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
Built-in Function: int __builtin_popcount (unsigned int x)
 Returns the number of 1-bits in x.
Built-in Function: int __builtin_popcountl (unsigned long)
 Similar to __builtin_popcount, except the argument type is unsigned long.
Built-in Function: int __builtin_parityll (unsigned long long)
 Similar to __builtin_parity, except the argument type is unsigned long long.

867 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 17:39:09.00 ID:/XE3HNn6.net]
>>847
自作ツールで無茶苦茶
役に立ってしまった。
そうか、クソコードだったかw

それはさておき今回の発端>>757は、
メモリリークなんか気にしはじめたら
修正コストがどれくらいかかるか
わからない、それだったら現状で
問題は表面化してないし、
そのままでいいじゃん、みたいな
状況だと思う。

Vargrindを導入して
手軽にメモリリークを
チェックできれるようになれば、
上司にもとりあえず直しましょう
という説得ができる
チャンスもあるかも。

868 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 17:57:06.08 ID:2r/FT+Vi.net]
>>850
うまいやり方だなぁ

869 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 17:57:22.00 ID:lGJ+2GvF.net]
>>850 この式は初めて見ると訳の分からない呪文みたいだけど、
落ち着いて考えると分割統治の技法を並列処理してるんだよね。
これで1の立ってるビットの数が分かる理由を考えるのは良い教材かと。

870 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 18:06:01.01 ID:2r/FT+Vi.net]
>>850
少なくとも最後の行だけは
a = (a + (a >> 16)) & 0x0000FFFF;
の方がよさそう。
正確には最大 32 にしかならないから & 0x0000001F でもよさそうだし、値の上限を考えながらだと途中の行ももう少し演算を減らせたりするかも?

871 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 18:06:59.52 ID:2r/FT+Vi.net]
>>856
0x0000003F だったw

872 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 20:35:00.38 ID:2r/FT+Vi.net]
>>850
a = (a & 0x55555555) + (a >> 1 & 0x55555555);
a = (a & 0x33333333) + (a >> 2 & 0x33333333);
a = (a + (a >> 4)) & 0x0F0F0F0F0F;
a += a >> 8;
a = (a + (a >> 16)) & 0x3F;

でも同じ結果が得られた。
最適化無しだと 9% くらい速くなった。

873 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 20:36:22.47 ID:2r/FT+Vi.net]
>>858
0F 多すぎw
0x0F0F0F0F ね

874 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 21:00:45.14 ID:4c2hO8gX.net]
しね



875 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 21:13:17.93 ID:2r/FT+Vi.net]
a = (a & 0x55555555) + (a >> 1 & 0x55555555);
a = (a & 0x33333333) + (a >> 2 & 0x33333333);
a = (a + (a >> 4)) & 0x0F0F0F0F;
a = (a * 0x101 * 0x10001) >> 24;

にしたら >>850 より 24% 速くなった(pentiumM linux)。
でも gcc の速度最適化を入れるとどれも変わらないね。

876 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 21:19:41.88 ID:4c2hO8gX.net]
なに1人ではしゃいでんのこいつ。

877 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 21:28:41.02 ID:Vmegj8Hy.net]
CPUにそういう命令なかったっけ?
使うところでは割と使いそうだけど

878 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 21:45:09.16 ID:5vkdTLeD.net]
>>863
AlphaとかM16Cとか古いCPUにはあった気がする。
最近はあんまり見ないね。

879 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 21:54:33.81 ID:nMOWxsiw.net]
ああ、SSEにpopcntがあるね

880 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 22:32:42.62 ID:hCV1tk8e.net]
ポックント

881 名前:デフォルトの名無しさん [2018/09/10(月) 02:37:34.95 ID:hUyLWeb6.net]
ビットを数える・探すアルゴリズム
www.nminoru.jp/~nminoru/programming/bitcount.html

882 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 10:36:25.17 ID:o5mvkory.net]
ビット数の数えあげが欲しくなるのってパリティチェックで末尾付加したりするとき?

883 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 10:44:53.73 ID:cl7nWcjG.net]
ソケットみたいにフラグをビット管理してるときとかもほしくなるかな

884 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 10:56:31.39 ID:ddUFIgl6.net]
符号とか暗号とかの世界ではしょっちゅう使うよ。
1の数で最適なアルゴリズムが変わるってケースもあるし、
暗号にサイドチャネル攻撃仕掛けるにはハミング距離とか重要。



885 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 11:27:01.59 ID:o5mvkory.net]
>>870 はなんとなく理解できるけど >>869 のほうは想像がつかないな
ビット管理されたフラグと ONしてるビット数による分岐や演算法が変わるのが直結しない感じ

886 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 11:51:19.73 ID:kNISuHie.net]
フラグは数えねえよな
性能重視でもなければビットフィールド使って読みやすくして欲しいわ

887 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 11:54:23.84 ID:iqhXZjjt.net]
バラで書くから読みにくいのであって
関数にしておけば外から見た仕様は変わらない

888 名前:デフォルトの名無しさん [2018/09/10(月) 12:16:32.03 ID:/R6yufrK.net]
普通の通信でエラー検出以外の目的でビット数を数える必要性がわからない。
そんな特定のCPU以外は必ず無駄な計算が必要になる方式をなぜ使う?

889 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 12:46:33.22 ID:x2RTnFiS.net]
>>874
エラー検出、訂正目的以外の通信のためにビットの数え上げするって誰かレスしてたっけ?

890 名前:デフォルトの名無しさん [2018/09/10(月) 15:09:59.53 ID:rXvKnWV4.net]
>>875
>>869はそうではないのか?ならば居ないな。

891 名前:デフォルトの名無しさん [2018/09/10(月) 19:25:38.98 ID:YAHzQjjo.net]
>>821
んーこの文章読むと、よく教科書的な本に書かれてる関数に対してexternを書きましょうってのは冗長で不要って話なのね。確かに実際の動きとは合うし勉強になりました。

>>822
書いてる意図を汲めてるのか自信ないけど、他のサイトにもリンカ依存とあって、この話が全ての環境に対して正しい話なのか・・・若干不安はある感じ?

892 名前:デフォルトの名無しさん [2018/09/10(月) 19:32:05.94 ID:WVFJrP31.net]
Common Lisp にビットを数える関数があるけどcでも同様のものがあったようなゔ

893 名前:デフォルトの名無しさん [2018/09/10(月) 20:00:47.59 ID:pZnz0RBT.net]
int a=0;

printf("%p" ,a);

printf("%p",&a);

同じアドレスが表示されると思っていたのですが、上下で違う数字が出力されました。
アドレスを表示するのはどちらが正しいのでしょうか?
よろしくお願いします。

894 名前:さまよえる蟻人間 mailto:sage [2018/09/10(月) 20:06:35.73 ID:NJC2soWX.net]
下。



895 名前:デフォルトの名無しさん [2018/09/10(月) 20:07:47.31 ID:WGo2tHWR.net]
>>879
&a の方。

ていうか同じになるわけがない。片方は printf() に a の内容である 0 を渡しているんだから。

896 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 20:26:02.04 ID:6MAzJtEj.net]
%p は ポインタを要求しているが
ポインタのサイズと intのサイズが違ってたら 鼻から悪魔

897 名前:デフォルトの名無しさん [2018/09/10(月) 20:28:01.62 ID:pZnz0RBT.net]
>>880
>>881
>>882

指定子Pで&が付いてない方も変換されると思っていました。
ただの数値が表示されるだけなんですね。

int *a;
int b=0;

a=&b;

printf("%p",a);
この場合は&が付いてなくてもアドレスを渡してるのでokなんですね。

ありがとうございました。

898 名前:デフォルトの名無しさん [2018/09/10(月) 20:29:18.90 ID:WGo2tHWR.net]
天文学的な値が出るかも知れんね

899 名前:デフォルトの名無しさん [2018/09/10(月) 20:30:01.84 ID:WGo2tHWR.net]
>>883
そうそう。そういうこと。

900 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 20:43:33.30 ID:l5sdNefZ.net]
>>869
それはどっちかって言うとビットサーチだね
68020 とかの BFFFO 命令とか

901 名前:デフォルトの名無しさん [2018/09/10(月) 21:01:01.97 ID:XzQQxj6r.net]
https://ideone.com/bsjclG

また、低学歴知恵遅れのクルクルパーがウソ書いてるわ。。。
64bitのアドレス空間を持ってて、intのサイズが32bitならちゃんと動くワケがないからな

902 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:07:42.09 ID:XxqHEWUO.net]
>>887
どの書き込みに対してのレス?

903 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:11:41.72 ID:7zqNUn7X.net]
>>887
これまたチンケな知識でマウント取りに来たな w

904 名前:デフォルトの名無しさん [2018/09/10(月) 21:12:59.71 ID:XzQQxj6r.net]
ID:WGo2tHWR ← コイツにきまってんだろ

なあにが

 そうそう。そういうこと。



なにも知らないムクなヤツ相手に
低学歴知恵遅れの分際でテキトーなことばっかり書き込んでる



905 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:16:56.02 ID:XxqHEWUO.net]
ん?これのこと?
> printf() に a の内容である 0 を渡している

906 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:19:04.26 ID:6SoA/END.net]
こんなにでかい釣り針だと
鯨が釣れるかも

907 名前:デフォルトの名無しさん [2018/09/10(月) 21:19:36.92 ID:XzQQxj6r.net]
>>883 ← ムクな初心者
>>885 ← 低学歴知恵遅れ ID:WGo2tHWR 「そうそう。そういうこと。」 ← コレのコトだ

低学歴知恵遅れはレスもおえないの?

908 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:21:51.21 ID:XxqHEWUO.net]
あれ?
int *a;
int b=0;
a=&b;
printf("%p",a);
って別に正しくね?

909 名前:デフォルトの名無しさん [2018/09/10(月) 21:22:53.59 ID:XzQQxj6r.net]
https://ideone.com/bsjclG

この処理結果みても分からないなら
オツムに相当な問題がある

910 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:25:52.44 ID:XxqHEWUO.net]
ううむ、俺にはaは64ビット環境だと64ビット長に見えるのだが違うのか?

911 名前:デフォルトの名無しさん [2018/09/10(月) 21:27:36.20 ID:XzQQxj6r.net]
で、処理結果みた?
で、処理結果みた?
で、処理結果みた?

912 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:29:43.88 ID:XxqHEWUO.net]
おたくのサンプルは64ビットアドレスをintにキャストしちゃてるやん。そりゃ実行結果違うわ。

913 名前:デフォルトの名無しさん [2018/09/10(月) 21:31:35.87 ID:XzQQxj6r.net]
https://ideone.com/PGwK6j
キャストはずしたったぞ
当然、結果はかわらない

やっぱりなこの板は低学歴知恵遅れしかいない
この程度のこともわからずにいきってレスしてるワケだからな

914 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:31:51.59 ID:6MAzJtEj.net]
たまたま 足りない分 0 を引っ張ってきてるけど(レジスタで渡ったから?)
スタックに積んでるリターンアドレスの一部から足りないのを補ってると、もっとわけわかな数値に
未定儀の挙動を推測すすのもまたオツなもの か



915 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:32:51. ]
[ここ壊れてます]

916 名前:39 ID:XxqHEWUO.net mailto: いやいや、883のaはポインタなんだってw
なんでintに入れちゃうのw
[]
[ここ壊れてます]

917 名前:デフォルトの名無しさん [2018/09/10(月) 21:33:36.29 ID:XzQQxj6r.net]
そんなことオレのしったことじゃないからな

 >>883 ← ムクな初心者
 >>885 ← 低学歴知恵遅れ ID:WGo2tHWR 「そうそう。そういうこと。」 ← コレのコトだ

低学歴知恵遅れはレスもおえないの?

918 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:40:38.56 ID:lZ/O7dtJ.net]
半角クンていつも周りを見ずに自分の思い込みだけでレスしちゃって誤り訂正できないから、恥ずかしい(*/□\*)

直進しかできない目隠しされたイノシシみたい

919 名前:デフォルトの名無しさん [2018/09/10(月) 21:42:09.42 ID:XzQQxj6r.net]
なにが間違いなわけ
指摘してみ

一切間違ったこと書いてないからな
低学歴知恵遅れはそもそも認知能力に問題がある

920 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:47:36.63 ID:XxqHEWUO.net]
なぜ64ビットポインタをintに入れたの?
883ではそんなこと一切してないんだけど。

逆に
>printf() に a の内容である 0 を渡している
は整数リテラルがintなのに%pで受けてるので、64ビット環境なら4バイト分スタックのゴミを拾ってきそうだけど。

921 名前:デフォルトの名無しさん [2018/09/10(月) 21:48:46.40 ID:XzQQxj6r.net]
はずかしくなって
こっち側にこようとしても
もう手遅れだからな

922 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:50:57.43 ID:XxqHEWUO.net]
なんだ、結局はaがポインタだってことを見逃しただけかよw

923 名前:デフォルトの名無しさん mailto:sage [2018/09/10(月) 21:55:18.07 ID:cYYSBBs1.net]
>>906
つ鏡

924 名前:デフォルトの名無しさん [2018/09/11(火) 00:11:24.08 ID:X6CualfE.net]
>>887
>>883はちゃんと動くよ。



925 名前:デフォルトの名無しさん mailto:sage [2018/09/11(火) 06:35:01.60 ID:pvBPsgEg.net]
>>909
半角野郎が数行のプログラムも理解できないくせに自分で改竄したコードが動かねぇって騒いでただけ。
半角野郎こそ低学歴知恵遅れクルクルパーで認知能力とオツムに相当な問題があるってことが証明されただけなので気にするな。
本人は顔真っ赤にして逃げたみたいだけど。

926 名前:デフォルトの名無しさん mailto:sage [2018/09/11(火) 07:57:47.34 ID:2zsIBj+S.net]
ポインタを受け取るべき%p変換指定子に、ポインタでない値を与えることの
危険性は >>882 ですでに指摘されてるのに、後乗りで書いた >>887
こんだけ引っ張れるのは、ある意味で才能かもな。

汚い言葉遣いを我慢しながら拝聴するほど啓蒙的な内容でもないし。

927 名前:デフォルトの名無しさん mailto:sage [2018/09/11(火) 08:11:06.15 ID:NBDkJ3+C.net]
>>911
半角クンのレスは、5%の真実と15%の間違い・思い込みと80%の繰り言・罵詈雑言でできてるからね。まっとうに読む価値はない。

928 名前:デフォルトの名無しさん mailto:sage [2018/09/11(火) 09:54:24.68 ID:oX9GyHv1.net]
まれにいいこと言う
850とか

929 名前:デフォルトの名無しさん mailto:sage [2018/09/11(火) 10:00:02.68 ID:R1B4IsqD.net]
釣り針が大きすぎて、クジラじゃないと釣れない

930 名前:デフォルトの名無しさん mailto:sage [2018/09/11(火) 11:44:57.89 ID:zLtJmO+E.net]
musl-libcのiconvコマンドの本体ってここを見ればいいよね?
https://git.musl-libc.org/cgit/musl/tree/src/locale/iconv.c

931 名前:デフォルトの名無しさん [2018/09/11(火) 20:05:08.62 ID:YMBQMGAL.net]
処理系って何?
cpuかコンパイラの事かなと思ってるんだけど。
間違ってる?

932 名前:デフォルトの名無しさん mailto:sage [2018/09/11(火) 20:29:34.46 ID:5X7KAgIC.net]
処理系は、翻訳環境と、実行環境に大別される
翻訳環境とはコンパイラ等開発ツールを実行する環境
実行環境とはコンパイル結果のバイナリが稼働する環境、客先と言ってもよい

933 名前:デフォルトの名無しさん [2018/09/11(火) 20:36:50.64 ID:YMBQMGAL.net]
>>917
バイナリが稼働する環境はcpuってことかな
どうもお世話になりました

934 名前:デフォルトの名無しさん mailto:sage [2018/09/11(火) 20:45:37.73 ID:5X7KAgIC.net]
cpuだけじゃないメモリが実装されているアドレス
i/oが実装されているアドレス
osの挙動
など様々な要因が絡む



935 名前:デフォルトの名無しさん mailto:sage [2018/09/11(火) 21:01:49.97 ID:LZbcaZ/B.net]
CPUが同じであっても、
Windowsでは動かせてもmacOSでは動かないとか
同じWindowsでも、64bit環境では動いても32bit環境だと動かないとか

936 名前:デフォルトの名無しさん mailto:sage [2018/09/11(火) 21:12:52.13 ID:ShO/owiX.net]
半角くん、いたの?
lynx で見てるから何言ってるかわからない。

937 名前:デフォルトの名無しさん mailto:sage [2018/09/11(火) 21:17:38.28 ID:pVzZZpUQ.net]
ゴミPC早く捨てろ

938 名前:デフォルトの名無しさん mailto:sage [2018/09/11(火) 21:28:47.48 ID:zLtJmO+E.net]
処理系ってC99に関してはJISで定義されてたよね。

939 名前:デフォルトの名無しさん mailto:sage [2018/09/13(木) 21:21:47.72 ID:1sKEH3Wo.net]
昔の教科書には
C言語の原稿
↓プリプロセッサ
マクロ・ヘッダファイルが展開された原稿
↓翻訳機
アセンブリ言語の原稿
↓アセンブラ
機械語
↓リンカ
実行可能ファイル

っていう図がよく描かれてて,今でもWebを検索するとよく見掛けるんだけど,ほんとに今現在のコンパイラってこういうことやってんの?
gccやclangって,もはやC言語の原稿からほぼほぼ直接に実行可能ファイルを生成してるんじゃない?
さすがにプリプロセッサくらいはあるかもしれんが。

940 名前:デフォルトの名無しさん mailto:sage [2018/09/13(木) 21:32:27.37 ID:CY4XgXEU.net]
-vつけて起動してみ。
プリプロcppはcc1に統合された。
gccだと、cc1とかasとかcollect2とかが動いてるはず。
clangはデフォルトだとasなしかも。

941 名前:デフォルトの名無しさん mailto:sage [2018/09/13(木) 21:54:33.53 ID:1sKEH3Wo.net]
>>925
あざす
やっぱり減ってはいるんだな。
結構ああいう図を見掛けるんで,なんか(ほんとにこんな段階踏んでんのか?)ってモヤモヤしてた。
素人考えだが,あんな風に幾つも重ねてビルドしてたら最適化しにくい気がするし。

942 名前:デフォルトの名無しさん mailto:sage [2018/09/13(木) 22:33:23.35 ID:brIJUf4C.net]
処理としてはわかれてるよそりゃ

943 名前:デフォルトの名無しさん mailto:sage [2018/09/13(木) 23:18:13.03 ID:1sKEH3Wo.net]
え そうなん
と思って空のファイルをgcc -vで処理したら
たしかにある程度進んでリンカの段階で エラーになったわ。

944 名前:デフォルトの名無しさん [2018/09/13(木) 23:28:49.69 ID:yqnwLH2V.net]
bash-4.3$ gcc -v -o aho aho.c ←開始
/usr/lib/gcc/i586-slackware-linux/5.3.0/specs から spec を読み込んでいます
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i586-slackware-linux/5.3.0/lto-wrapper
ターゲット: i586-slackware-linux
configure 設定: ../gcc-5.3.0/configure --prefix=/usr --libdir=/usr/lib --mandir
=/usr/man --infodir=/usr/info --enable-shared --enable-bootstrap --enable-langu
ages=ada,c,c++,fortran,go,java,lto,objc --enable-threads=posix --enable-checkin
g=release --enable-objc-gc --with-system-zlib --with-python-dir=/lib/python2.7/
site-packages --enable-libstdcxx-dual-abi --with-default-libstdcxx-abi=gcc4-com
patible --disable-libunwind-exceptions --enable-__cxa_atexit --enable-libssp --
enable-lto --disable-install-libiberty --with-gnu-ld --verbose --enable-java-ho
me --with-java-home=/usr/lib/jvm/jre --with-jvm-root-dir=/usr/lib/jvm --with-jv
m-jar-dir=/usr/lib/jvm/jvm-exports --with-arch-directory=i386 --with-antlr-jar=
/root/slackware-current/source/d/gcc/antlr-runtime-3.4.jar --enable-java-awt=gt
k --disable-gtktest --with-arch=i586 --target=i586-slackware-linux --build=i586
-slackware-linux --host=i586-slackware-linux
スレッドモデル: posix
gcc バージョン 5.3.0 (GCC)
(-続く-)



945 名前:デフォルトの名無しさん [2018/09/13(木) 23:29:23.47 ID:yqnwLH2V.net]
(-続き-)
COLLECT_GCC_OPTIONS='-v' '-o' 'aho' '-mtune=pentium' '-march=i586'
/usr/libexec/gcc/i586-slackware-linux/5.3.0/cc1 -quiet -v aho.c -quiet -dumpba
se aho.c -mtune=pentium -march=i586 -auxbase aho -version -o /tmp/ccVi37md.s ← @プリプロセス
GNU C11 (GCC) version 5.3.0 (i586-slackware-linux)
compiled by GNU C version 5.3.0, GMP version 6.1.0, MPFR version 3.1.4, MPC
version 1.0.3
warning: GMP header version 6.1.0 differs from library version 6.1.2.
GGC heuristics: --param ggc-min-expand=63 --param ggc-min-heapsize=62246
存在しないディレクトリ "/usr/lib/gcc/i586-slackware-linux/5.3.0/../../../../i58
6-slackware-linux/include" を無視します
#include "..." の探索はここから始まります:
#include <...> の探索はここから始まります:
/usr/lib/gcc/i586-slackware-linux/5.3.0/include
/usr/local/include
/usr/lib/gcc/i586-slackware-linux/5.3.0/include-fixed
/usr/include
探索リストの終わりです。
(-続く-)

946 名前:デフォルトの名無しさん [2018/09/13(木) 23:30:05.16 ID:yqnwLH2V.net]
(-続き-)
GNU C11 (GCC) version 5.3.0 (i586-slackware-linux) ← Aコンパイル
compiled by GNU C version 5.3.0, GMP version 6.1.0, MPFR version 3.1.4, MPC
version 1.0.3
MPC version 1.0.3
warning: GMP header version 6.1.0 differs from library version 6.1.2.
GGC heuristics: --param ggc-min-expand=63 --param ggc-min-heapsize=62246
Compiler executable checksum: c5a3ffed702d1cd048214b2b66d4a98a
(-続く-)

947 名前:デフォルトの名無しさん [2018/09/13(木) 23:30:29.37 ID:yqnwLH2V.net]
(-続き-)
COLLECT_GCC_OPTIONS='-v' '-o' 'aho' '-mtune=pentium' '-march=i586'
/usr/lib/gcc/i586-slackware-linux/5.3.0/../../../../i586-slackware-linux/bin/a
s -v --32 -o /tmp/ccMFr9O6.o /tmp/ccVi37md.s ← Bアセンブル
GNU アセンブラ バージョン 2.26 (i586-slackware-linux)、BFD バージョン version 2
.26.20160125 を使用
(-続く-)

948 名前:デフォルトの名無しさん [2018/09/13(木) 23:31:04.04 ID:yqnwLH2V.net]
(-続き-)
COMPILER_PATH=/usr/libexec/gcc/i586-slackware-linux/5.3.0/:/usr/libexec/gcc/i58
6-slackware-linux/5.3.0/:/usr/libexec/gcc/i586-slackware-linux/:/usr/lib/gcc/i5
86-slackware-linux/5.3.0/:/usr/lib/gcc/i586-slackware-linux/:/usr/lib/gcc/i586-
slackware-linux/5.3.0/../../../../i586-slackware-linux/bin/
LIBRARY_PATH=/usr/lib/gcc/i586-slackware-linux/5.3.0/:/usr/lib/gcc/i586-slackwa
re-linux/5.3.0/../../../../i586-slackware-linux/lib/:/usr/lib/gcc/i586-slackwar
e-linux/5.3.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' 'aho' '-mtune=pentium' '-march=i586'
/usr/libexec/gcc/i586-slackware-linux/5.3.0/collect2 -plugin /usr/libexec/gcc/
i586-slackware-linux/5.3.0/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/i586-s
lackware-linux/5.3.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccGuF6mf.res -pl
ugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pas
s-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s
--eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o aho /usr/lib/
gcc/i586-slackware-linux/5.3.0/../../../crt1.o /usr/lib/gcc/i586-slackware-linu
x/5.3.0/../../../crti.o /usr/lib/gcc/i586-slackware-linux/5.3.0/crtbegin.o -L/u
sr/lib/gcc/i586-slackware-linux/5.3.0 -L/usr/lib/gcc/i586-slackware-linux/5.3.0
/../../../../i586-slackware-linux/lib -L/usr/lib/gcc/i586-slackware-linux/5.3.0
/../../.. /tmp/ccMFr9O6.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --
as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i586-slackware-linux/5.3.0/crtend
.o /usr/lib/gcc/i586-slackware-linux/5.3.0/../../../crtn.o ← Cリンク

949 名前:デフォルトの名無しさん [2018/09/13(木) 23:34:54.24 ID:yqnwLH2V.net]
普通に別々のモジュールで独立して処理されてる

@プリプロセス /usr/libexec/gcc/i586-slackware-linux/5.3.0/cc1
Aコンパイル /usr/bin/gcc
Bアセンブル /usr/lib/gcc/i586-slackware-linux/5.3.0/../../../../i586-slackware-linux/bin/as
Cリンク /usr/libexec/gcc/i586-slackware-linux/5.3.0/collect2

950 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 00:17:52.55 ID:lqNqtREE.net]
>>934
/usr/bib/gccはちげーだろ

951 名前:デフォルトの名無しさん [2018/09/14(金) 00:51:20.40 ID:q3l06dS7.net]
>>934
コンパイルは
/usr/lib/x86_64-linux-gnu/6/cc1
だな。俺の場合

952 名前:デフォルトの名無しさん [2018/09/14(金) 00:58:32.39 ID:fXySkelb.net]
bash-4.3$ gcc -v -E -o aho_.c aho.c ←開始
/usr/lib/gcc/i586-slackware-linux/5.3.0/specs から spec を読み込んでいます
COLLECT_GCC=gcc
ターゲット: i586-slackware-linux
configure 設定: ../gcc-5.3.0/configure --prefix=/usr --libdir=/usr/lib --mandir
=/usr/man --infodir=/usr/info --enable-shared --enable-bootstrap --enable-langu
ages=ada,c,c++,fortran,go,java,lto,objc --enable-threads=posix --enable-checkin
g=release --enable-objc-gc --with-system-zlib --with-python-dir=/lib/python2.7/
site-packages --enable-libstdcxx-dual-abi --with-default-libstdcxx-abi=gcc4-com
patible --disable-libunwind-exceptions --enable-__cxa_atexit --enable-libssp --
enable-lto --disable-install-libiberty --with-gnu-ld --verbose --enable-java-ho
me --with-java-home=/usr/lib/jvm/jre --with-jvm-root-dir=/usr/lib/jvm --with-jv
m-jar-dir=/usr/lib/jvm/jvm-exports --with-arch-directory=i386 --with-antlr-jar=
/root/slackware-current/source/d/gcc/antlr-runtime-3.4.jar --enable-java-awt=gt
k --disable-gtktest --with-arch=i586 --target=i586-slackware-linux --build=i586
-slackware-linux --host=i586-slackware-linux
スレッドモデル: posix
(-続く-)

953 名前:デフォルトの名無しさん [2018/09/14(金) 00:59:43.97 ID:fXySkelb.net]
(-続き-)
gcc バージョン 5.3.0 (GCC)
COLLECT_GCC_OPTIONS='-v' '-E' '-o' 'aho_.c' '-mtune=pentium' '-march=i586'
/usr/libexec/gcc/i586-slackware-linux/5.3.0/cc1 -E -quiet -v aho.c -o aho_.c -
mtune=pentium -march=i586
存在しないディレクトリ "/usr/lib/gcc/i586-slackware-linux/5.3.0/../../../../i58
6-slackware-linux/include" を無視します
#include "..." の探索はここから始まります:
#include <...> の探索はここから始まります:
/usr/lib/gcc/i586-slackware-linux/5.3.0/include
/usr/local/include
/usr/lib/gcc/i586-slackware-linux/5.3.0/include-fixed
/usr/include
探索リストの終わりです。
COMPILER_PATH=/usr/libexec/gcc/i586-slackware-linux/5.3.0/:/usr/libexec/gcc/i58
6-slackware-linux/5.3.0/:/usr/libexec/gcc/i586-slackware-linux/:/usr/lib/gcc/i5
86-slackware-linux/5.3.0/:/usr/lib/gcc/i586-slackware-linux/:/usr/lib/gcc/i586-
slackware-linux/5.3.0/../../../../i586-slackware-linux/bin/
LIBRARY_PATH=/usr/lib/gcc/i586-slackware-linux/5.3.0/:/usr/lib/gcc/i586-slackwa
re-linux/5.3.0/../../../../i586-slackware-linux/lib/:/usr/lib/gcc/i586-slackwar
e-linux/5.3.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-E' '-o' 'aho_.c' '-mtune=pentium' '-march=i586'

エラーなし

954 名前:デフォルトの名無しさん [2018/09/14(金) 01:02:16.51 ID:fXySkelb.net]
プリプロセス前
bash-4.3$ cat aho.c
#include <stdio.h>
#define ahobaka "あほばか"
#define AHOBAKA aho##baka
#define LIT(str) #str
#define PRINT(f,...) fprintf(stdout, f, __VA_ARGS__)
#define SHINE PRINT("%s%s\n", AHOBAKA, LIT(a"b"c))

int main(void) {
SHINE;
return 0;
}

プリプロセス後
bash-4.3$ cat aho_.c
(-略-)
# 8 "aho.c"
int main(void) {
fprintf(
# 9 "aho.c" 3 4
stdout
# 9 "aho.c"
, "%s%s\n", "あほばか", "a\"b\"c");
return 0;
}



955 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 04:27:04.26 ID:q3l06dS7.net]
pcc(1)とかで試すとわかりやすいとおもう。

956 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 05:58:00.88 ID:3Ef1q6jY.net]
コンパイラが(プリプロセス済みの)ソースを処理する際、
直接にはアセンブリのソースに持っていかず、いったん中間言語に変換。
その中間言語の段階でも最適化を行ってから
アセンブリに変換してアセンブル・リンク。
……みたいな手順になってると聞いたことがある。
中間言語段階の中間ファイルを出力させることができるか知らんけど。

プリプロセッサ、コンパイラ、アセンブラ、リンカよりも
内部的な手順はむしろ増えてるのかも。

957 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 07:13:28.65 ID:RUHHwTRx.net]
>>941
実行時コンパイラ
https://ja.wikipedia.org/wiki/%E5%AE%9F%E8%A1%8C%E6%99%82%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9

958 名前:デフォルトの名無しさん [2018/09/14(金) 08:36:29.54 ID:SYmkUqRw.net]
JITとなんの関係が?

959 名前:デフォルトの名無しさん [2018/09/14(金) 08:49:57.91 ID:q3l06dS7.net]
>>941

>>924 の図に倣うなら

C言語の原稿
↓プリプロセッサ
マクロ・ヘッダファイルが展開された原稿
↓翻訳機1
中間言語(最適化済み)
↓翻訳機2
アセンブリ言語の原稿
↓アセンブラ
機械語
↓リンカ
実行可能ファイル

みたいなかんじかね。

960 名前:デフォルトの名無しさん [2018/09/14(金) 09:12:54.86 ID:d02sSTx1.net]
昔 LSIゲームってあったでしょ
ああいうゲームをCで書いてパソコンで遊びたいんだけど
技術的な情報が不足してんだ 特に画面を動かす方法
そういうのどこで手に入るか分かる人いる? 教えてくださいヽ(^o^)丿

961 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 09:49:18.88 ID:1qfFvEAu.net]
cursesライブラリを使う

962 名前:デフォルトの名無しさん [2018/09/14(金) 10:39:42.96 ID:i1kWv4b4.net]
CでGUIまでやりたいということか?
うーん・・・

963 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 12:08:50.95 ID:9XnUq3uB.net]
>>945
エスケープシーケンスで検索

とりあえず NetHack みたいので遊んでみたら

964 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 12:34:30.19 ID:3Ef1q6jY.net]
>>945 の言うLSIゲームってのが、
ドットマトリクスの汎用液晶パネルを使ったゲームじゃなくて、
ゲーム&ウォッチみたいな専用にデザインされた液晶のゲームだと
ちょいと変わってくるかもな。

大筋は同じだけど、少数のデカキャラ表示を点けたり消したり。



965 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 12:48:17.13 ID:9XnUq3uB.net]
イメージ伝えるためにLSIゲームと言うならドットマトリックスというよりゲームウォッチ式じゃないかな。
ただその趣旨は、簡易な操作と表示のゲームなんじゃないかと。
キャラクタ端末ゲームを知ればそっちに倒れるんじゃないかな?

966 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 12:53:46.05 ID:/Lpq1ndz.net]
>>945
画面表示はglut

967 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 13:39:29.18 ID:GvbetZ+k.net]
ゲームウォッチみたいなのってビットマップじゃないけど、表示する情報量どんくらいなんだろうね?
64bitくらい?

968 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 13:53:35.51 ID:q3l06dS7.net]
エスケープシーケンスの話が出たついでに質問なんだけど
コマンド名: エラーレベル: エラーメッセージ
↑こういう形式のエラーで、エラーレベルが赤や黄に色付けされてる場合があるんだけども
これってなにかライブラリがあるのかな。それとも各種アプリケーションが自力でやってんのかな。

969 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 14:03:35.51 ID:xLMWwHO5.net]
LSI-Cと聞いて飛んできました
懐かしい・・・

970 名前:デフォルトの名無しさん [2018/09/14(金) 15:19:32.14 ID:d02sSTx1.net]
>>949

そうそう ああいう感じでやれないかなと思ってる
別に3Dとかじゃないし そんなに高度な技術情報が必要とも思えないんだけどな
APIを勉強すればある程度分かるかな?

971 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 15:37:28.55 ID:GvbetZ+k.net]
色付けはほぼ自前なんじゃないかねえ。単に制御文字挟むたけだからね。

端末にお絵かきするならローグでも使った伝統あるcursesで。

972 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 10:21:05.36 ID:iTkubaya.net]
>>955
ttp://www.orchid.co.jp/computer/cgame/index.html

973 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 10:24:40.59 ID:RjcPqpvv.net]
>>952
ttps://www.nintendo.co.jp/n10/interview/game_and_watch/vol1/index2.html
>というのも、ゲーム&ウオッチで採用したチップは、電卓で使われているのと同じものだったんです。
>そもそも電卓のディスプレイのひとつの数字は7セグメントで表示されるようになっていまして・・・。
(略)
>72セグメントの表示が可能だったそのチップを使って『ボール』をつくったんです。

974 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 12:30:45.82 ID:WJY+K2bP.net]
>>958
面白いな
しかしゲームウォッチって、液晶上の配線の都合もあって配置がぐちゃぐちゃになってそうだから、ビットのON/OFFだけとは言え面倒そうだな



975 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 12:52:26.12 ID:rgCMOp4r.net]
コンピュータというほど抽象化もされてないんだろうね。
コントローラではあるけども。

976 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 12:53:38.17 ID:iTkubaya.net]
配線の都合で配置がぐちゃぐちゃ?

977 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 13:31:29.74 ID:OUVvcRON.net]
ゲームウオッチは知らんけど配線パターンの都合でビット配置が変則的になるとかはあるよ

978 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 18:43:35.47 ID:8KftQgLD.net]
蒸し返すようだが近代的な処理系でも,ビルドの各作業は分担して実行してると思っていいのね。

プリプロセッサで展開→中間言語に翻訳→アセンブリ言語に翻訳→機械語にアセンブラ→リンク

979 名前:デフォルトの名無しさん [2018/09/15(土) 18:59:03.04 ID:kl+My5NF.net]
>>957
ありがとう すごい参考になった

980 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 06:08:26.07 ID:QKaZz7Xi.net]
>>963 そう考えて良いと思うよ。
ただし、各段階で実行されるツールが独立した実行ファイルか、とか
それぞれの段階で作られる中間状態をファイルとして取り出せるか、
という話なら「場合による」ってことになる。

981 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 23:54:07.55 ID:ynEgKPZ+.net]
>>965
ありがとうございます。

982 名前:デフォルトの名無しさん mailto:sage [2018/09/17(月) 00:45:31.62 ID:jghdaJ/O.net]
save-tempsは割と使います

983 名前:デフォルトの名無しさん mailto:sage [2018/09/17(月) 06:09:25.28 ID:5TL9cO8s.net]
gcc -save-temps -o prog prog.c
と指定すると prog.i, prog.s, prog.o が残るのね。
それでもプリプロセス済みCとアセンブリとの中間段階は見られないか。

ちなみに -save-temps と -pipe を同時に指定すると、
gcc: 警告: -save-temps が指定されたため、-pipe は無視されました
……ですってよ、奥様。

984 名前:デフォルトの名無しさん mailto:sage [2018/09/17(月) 07:57:34.69 ID:SBpxj18K.net]
>>968
> それでもプリプロセス済みCとアセンブリとの中間段階は見られないか。
prog.iとprog.sが一体なんだと思ってるんだろう…



985 名前:デフォルトの名無しさん mailto:sage [2018/09/17(月) 08:09:11.53 ID:hbuTlOjm.net]
プリプロセスとかアセンブリとかがあるとなんか困るの?
なんでそんなに必死なのか分からん。
処理が過度に複雑にならないためとか、様々な言語やCPUといった対象に幅広く対応するためとか、いろんな理由で工程を分ける方が合理的でしょうに。

986 名前:デフォルトの名無しさん mailto:sage [2018/09/17(月) 08:13:06.60 ID:BwzrWhGR.net]
鉄鉱石とボーキサイトと石油入れたら自動車が出てくる装置があると思ってるんでしょ

987 名前:968 mailto:sage [2018/09/17(月) 08:27:18.66 ID:5TL9cO8s.net]
.i がプリプロセス済みのC
.s がアセンブリ
ということは分かってるのよ、それらの間にある状態を
ファイルとして見ることができないという話。

GCC用語ではGENERICの段階てことになるかな。
GENERICとアセンブリの間にもまだあるみたいだけど。

988 名前:デフォルトの名無しさん mailto:sage [2018/09/17(月) 08:28:59.23 ID:SBpxj18K.net]
>>970
単なる技術的興味だろ
このスレでうだうだやるなよって言うのならわかるけど必死とか意味わからん

989 名前:デフォルトの名無しさん mailto:sage [2018/09/17(月) 08:36:20.28 ID:SBpxj18K.net]
>>972
> それらの間にある状態を
> ファイルとして見ることができないという話。
gccならこの辺りを見ればいいんじゃね
https://code-examples.net/ja/docs/gcc~7/developer-options

990 名前:デフォルトの名無しさん mailto:sage [2018/09/17(月) 09:14:28.38 ID:z+cSzUXJ.net]
TASMとTCCとTLINKにお世話になった20年前。

991 名前:デフォルトの名無しさん mailto:sage [2018/09/17(月) 09:19:33.19 ID:5TL9cO8s.net]
>>974 ありがとう。
でもオプションの数を見ただけでウンザリしてもうた。
コンパイラ開発者向けのレベルになると最適化処理のステップごとなのね。

992 名前:デフォルトの名無しさん mailto:sage [2018/09/17(月) 10:17:59.30 ID:qtGPC3c9.net]
-Eだろjk

993 名前:デフォルトの名無しさん mailto:sage [2018/09/17(月) 11:58:09.09 ID:5NB0QfSZ.net]
たとえばpccなんかはものすごく外部コマンドにたよってるよね。
man pccとするとその解説が載ってる。

994 名前:デフォルトの名無しさん mailto:sage [2018/09/17(月) 12:00:30.90 ID:5NB0QfSZ.net]
質問者はここを参照するといいかも
pcc.ludd.ltu.se/how-it-works/
ただ,PCCはGCCやらClangと違って小ささ,見通しのよさを重視してるから,
GCCとかClangとかはそんなことやってないかもしれん。
(ていうかGCCやClangにおける↑上のリンクみたいなドキュメントはないのかな)



995 名前:デフォルトの名無しさん mailto:sage [2018/09/18(火) 20:12:09.59 ID:2waW+Aqm.net]
分かってて使こてたんちゃうん

996 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 05:40:46.68 ID:6Ke1Nn09.net]
C言語(じゃなくてもいいけど)をやってると
標準出力に出力するというのがいかに便利かを痛感するねぇ

下手にファイルやなんかに出力先を指定しようものなら一気に
パーミッションや属性値の問題が噴出するのに対して
標準出力ではそういう一切を気にせずに垂れ流せる

997 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 07:56:02.42 ID:bRibFDbQ.net]
C++の学習(入門レベル〜初心者レベル)をするのにC言語の知識って必須なんですか?
読んでるC++入門書が途中から分かりづらかったので独習C++って入門書を買おうとしたんですけど
とあるレビューにC言語を習得してるのが望ましいとか書いてあって気になったんですが…
プログラミング言語自体経験皆無なのですが、どうすればいいでしょうか?

998 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 08:04:03.02 ID:37LGoDD1.net]
>>982
C++はCの大半の部分を包含したような言語仕様になっているから、必然的にCの知識も必要になってくる。本を書く方も、Cと重複するような内容まですべて書いてると膨大になってくるから、Cを知っている前提になっている本は多い。
C++の流儀でコーディングするなら使われないCなりの書き方とかもあるけど、基本的にはCは避けて通れないはず。
頑張ってCも身に付けるか、もっと初心者が取っつきやすい言語から始めた方がいいかも。

999 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 08:29:50.54 ID:t41Iifgl.net]
じゃあCの知識を前提にしてないC++の本探せば
やさしいC++とかでいいんじゃね

1000 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 08:47:40.49 ID:OxeqQ4V7.net]
全部やればいいと思うよ。pythonもlispも
C++の必要性を実感するのってプログラムが大規模になってからなので、最初はちょっとポイント絞るのが大変かもね

1001 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 10:31:35.10 ID:bRibFDbQ.net]
>>983
回答ありがとうございます
ロベールって本読んでたんですが(クラスの章で読むの中断)今の所特にC言語などの前提知識は
要求されてなかったんですが、これから必要になっていく感じですかね・・
具体的にはどれくらいC言語のスキルを付けてからC++に逝くのが望ましいですか?苦しんで覚えるC言語って本はざっと読んだんですがこれじゃ弱いですよね・・
.....それともCに拘らずに何かpythonとかrubyみたいな人気そうで簡単そうな言語で何か作れるくらいまで覚えてからC言語に戻ってきたほうが
一見遠回りのように見えて近道なんでしょうか?質問ばかりですいません;

1002 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 10:41:53.75 ID:h/A1qpKl.net]
ロベール読めないってマ?

1003 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 17:03:44.61 ID:t41Iifgl.net]
>プログラミング言語自体経験皆無なのですが
>クラスの章で読むの中断
>ざっと読んだんですがこれじゃ弱いですよね・・

C++にこだわる理由を知りたくなったw
そして読んでるだけ?手動かしてる?

1004 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 17:18:24.07 ID:5wa+YDhW.net]
俺が禿1stを読み始めた当時も大した理由はなかったな
なんだか凄そう、その程度のことだった



1005 名前:さまよえる蟻人間 mailto:sage [2018/09/19(水) 17:29:55.07 ID:hbV0PURz.net]
次スレ頼む。

1006 名前:デフォルトの名無しさん [2018/09/19(水) 17:57:48.07 ID:XSTNMnDw.net]
次スレ

C言語なら俺に聞け 148
mevius.5ch.net/test/read.cgi/tech/1537347410/

1007 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 20:24:47.33 ID:nVz8f0fv.net]
今から覚えるならcはやってもc++はやらんでも良いと思うわ

1008 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 20:27:17.70 ID:9wwh2JnW.net]
C++は拡張が酷すぎると思う

1009 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 22:45:11.03 ID:+Hv0QgVJ.net]
Cの拡張の無さの方がひどい

1010 名前:デフォルトの名無しさん [2018/09/19(水) 22:48:46.48 ID:xLP4ypV2.net]
むしろ昔はC++のコードからCのコードを出力してたからな
Cは拡張性は抜群

ウンコスクリプトもCで書かれてる
C以外の言語が淘汰されることがあっても
Cが淘汰されることはない

1011 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 23:00:14.31 ID:XIk0tg++.net]
C++で作っていいのは継続的な開発がない場合だけだな
継続的に開発やメンテナンスをするならC++は使っちゃいかん

1012 名前:デフォルトの名無しさん mailto:sage [2018/09/20(木) 02:32:23.68 ID:v2140bTt.net]
>>988
動かしてます。書きながらやってます
理由はあれですが最終的にC#とC++使いこなせるようになりたいです
他の簡単な言語やるとしたらどれくらいのまでスキルあげればいいんですかね・・

1013 名前:デフォルトの名無しさん mailto:sage [2018/09/20(木) 02:59:01.53 ID:OZxd0eW0.net]
たのしいRuby 第5版、2016
Effective Ruby、2015

さらに、JavaScript, jQuery をやっても、
C++ の1冊よりも、はるかに簡単だろ

C++ を読んでも、何も作れないし、長時間のムダ!

1014 名前:デフォルトの名無しさん mailto:sage [2018/09/20(木) 03:28:24.58 ID:90KUJ2ts.net]
>>997
C#とC++やりたいなら、まずはC#から入った方が良さそう。
rubyは全く方向性が違うし今(そしてこれからも)やる必要はない。



1015 名前:デフォルトの名無しさん mailto:sage [2018/09/20(木) 03:52:33.79 ID:v2140bTt.net]

1016 名前: rel="noopener noreferrer" target="_blank" class="reply_link">>>998-999
ありがとうございます
C#からやったほうがいい理由も教えていただきたいところですが1000レス目ですね…
RubyもやってみたいんですがViisualSの導入出来てるのでそれで動くC#からやってみます
C言語から脱線してしまいすいませんでした
[]
[ここ壊れてます]

1017 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 34日 4時間 16分 31秒

1018 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<317KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef