爆笑ログ externは要らない子

C言語でexternは不要と主張するQz 大きな釣り針に釣り上げられる。
釣り上げられる際に暴れて大爆死 WWWW
それでは爆笑ログをどーぞ  

以下は、http://toro.2ch.net/test/read.cgi/tech/1371208925/から引用

C言語なら俺に聞け(入門編)Part 116

以前からexternは不要とタワゴトを繰り返しているQz
261 :◆QZaw55cn4c  2013/06/25(火) 21:34:56.45   
>>260
こっちからはなにかよくわかっていませんが、持ちネタの「仮定義」tentative defenision のよーな木が

extern は要らない子っ!!!!


 

バカをからかう奴
266 :デフォルトの名無しさん  2013/06/26(水) 00:14:02.45   
>>261
そりゃ業務で分割コンパイルも経験した事のないヤツにはexternは不要だろうな


 

267 :◆QZaw55cn4c  2013/06/26(水) 04:07:29.94   
>>266
キーワード extern を1回も使わなくても複数の翻訳単位で系を構成することはできます(棒)
extern は要らない子っ


 

277 :◆QZaw55cn4c  2013/06/26(水) 12:31:20.85   
>>268
グローバル変数を使うときでも制約はありますが extern キーワードを使わなくともリンクできます(棒)


 

後で出てくる。結構古いが少なくともQzよりは見識がある筆者の書籍
282 :デフォルトの名無しさん  2013/06/26(水) 12:44:39.50   
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.5.4.html

こういうのは古いけど今でも立派に通用するテクニックだ


 

288 :デフォルトの名無しさん  2013/06/26(水) 13:06:27.26   
>>285
ちょっと違うなあ

http://blog.bitmeister.jp/?p=614

>externのついた大域変数は必ずいずれかのモジュールに実体がないとダメで、
>externのつかない大域変数は基本的にexternありと同じだが、いずれのモジュールにも
>実体がなければリンカが実体を作る、という感じになるでしょうか。

リンカに任せるのかよ
バグの温床になりそうだな


 

289 :デフォルトの名無しさん  2013/06/26(水) 13:10:52.54   
ついでにコメ欄

>fs Says:
>6月 11th, 2011 at 11:00 PM
>このような言語仕様になった(externの省略が許されるよう緩和された)理由は、
>もともとUNIX他のオペレーティングシステムのリンカーがFortran言語を前提に
>作られている現状を追認するためなのではないかと思います。Fortranは
>上記の「初期値式を持つ定義」は許されない代わりに、extern宣言は不要ですから。

「extern不要!」と言ってるやつはロートルじゃねーの
俺はexternを省略するな、と教わった口だからな


 

293 :285  2013/06/26(水) 14:33:07.27   
仮定義っていうのか。勉強になったわ。

仮定義
初期化子を指定しない定義を仮定義という。同じ変数の仮定義は、1つの翻訳単位に複数存在しても構わない。
定義と同様、実体は確保される。仮定義が一つの翻訳単位に複数存在した場合、コンパイラはそれらを1つにまとめ、
0の初期化子を持ったものとして定義する。ただし、全翻訳単位において既に定義が存在すれば、extern宣言された
ものとして振る舞う。この挙動は紛らわしい為、特に必要でない限り仮定義を用いるのは避けた方が無難である。

int n;

尚、同じ仮定義が複数の翻訳単位に存在する場合の、リンク時の動作は規格化されていない。
故に、この場合の動作は未定義である。gccではこの場合、コンパイラが解決している模様。
また、定義と仮定義が同時に存在する場合もコンパイラが解決している模様(言うまでもなく、
定義は2つ以上存在してはならない)。

http://d.hatena.ne.jp/XuHuang/20070624/1182669569


 

294 :デフォルトの名無しさん  2013/06/26(水) 14:34:11.67   
つまりQZは

>この挙動は紛らわしい為、特に必要でない限り仮定義を用いるのは避けた方が無難である。

これを正当化してるわけか
糞だな


 

310 :デフォルトの名無しさん  2013/06/26(水) 21:11:49.11   
>>293
規格書にもポータブルでないと明記されている。
企画書の何処に書かれているか分からないゴミクズが炎上学習企んでるだけ WWWW


 

基本すら理解していないバカが「本質を理解してないと…」って WWWW
316 :◆QZaw55cn4c  2013/06/26(水) 21:48:33.57   
>>289
MASM5->MASM6 では EXTERNDEF なるディレクティブが新設されたくらい当たり前に新しい考え方

>俺はexternを省略するな、と教わった口だからな
本質を理解しないと新しいことに対応できなくなりますよね


 

321 :◆QZaw55cn4c  2013/06/26(水) 22:05:58.49   
>>293
>gccではこの場合、コンパイラが解決している模様。
コンパイラがリンクするわけがない。リンカがリンクするんだ。それを書いた奴は誰?URL をさらしてくれないか?
表からみえる gcc はコンパイラドライバであってコンパイラではない

>定義と仮定義が同時に存在する場合もコンパイラが解決している模様(言うまでもなく、定義は2つ以上存在してはならない)。
定義という言葉自体が曖昧。この問題を正確に記述するのであれば、「初期化を伴う定義」と「宣言」または「仮定義」の二つのみを使うべき
初期化を伴う定義はリンクするオブジェクトのすべてにおいて二箇所以上に存在してはならない、それだけの話だ


 

藤原洋に一方的にケンカを吹っかけるQz
でも解説本を書くだけのスキルも見識も持ってない。
322 :◆QZaw55cn4c  2013/06/26(水) 22:08:41.51   
>>282
残念ながらCならばそんなことをする必要はないMASM6だって必要なかったくらいだからねその著者もあやしいものだね


 

324 :◆QZaw55cn4c  2013/06/26(水) 22:10:33.44   
>>310
リンカやオブジェクトファイルの仕様がCの言語仕様書に明記されるのか?かなり疑問だ


 

325 :◆QZaw55cn4c  2013/06/26(水) 22:12:08.85   
>>279
まだまだこのネタいけるね


 

釣り針を垂らしてみる
343 :デフォルトの名無しさん  2013/06/27(木) 22:25:42.00   
extern int array[10000];
こういう定義がふくまれるヘッダーファイル

arrayを使っている(定義している)モジュールをリンクしなければarrayの領域は確保されないが、
int array[10000];
では、使う使わないに関わらず領域が確保されてしまう。

要約するとQzはうんこ


 

344 :デフォルトの名無しさん  2013/06/27(木) 22:27:38.84   
署名わすれたわ WWWW

要約するとQzはうんこ WWWW


 

通りすがりの質問者
408 :デフォルトの名無しさん  2013/06/29(土) 22:50:57.07   
http://www.k-cube.co.jp/wakaba/server/format.html

scanf用の入力フォーマット指定子の中に、
unsigned charの場合が載っていません。

どのように指定したらいいですか?


 

極めてまともな助言をしてみる
416 :デフォルトの名無しさん  2013/06/30(日) 01:09:09.99   
>>408
そのクソページに書かれてないだけで、正式な規格書には書かれている。
初心者はまともな書籍で学ぶべき


 

何故かバカが釣れる。 WWWW
Qzが言っている「手元のISO/IEC9899:1999」とは、前回の炎上学習法でtentative definitionというキーワードをゲットしてから、慌ててググって入手した物。
Qzはそれ以降ISO/IEC9899:1999を引用して電波をまき散らし始めた。
正規版は有償なので無償公開されているworking paperを入手したものと思われる
423 :◆QZaw55cn4c  2013/06/30(日) 08:22:38.61   
>>416>>421
本当か?
手元のISO/IEC9899:1999 7.19.6.2.12 には書式指定子に %c のunsigned charの場合なるものは存在しないが?

頭沸いていないか?それとも自治スレで完敗したのでまた荒しに来たのか?


 

424 :◆QZaw55cn4c  2013/06/30(日) 08:23:43.53   
>>422
巣ではお前の回答を今か今かと待っているぞ?はやく巣に戻れ


 

偽規格書と煽ってみる
425 :デフォルトの名無しさん  2013/06/30(日) 08:40:02.39   
>>423
自治スレ? そんなクソスレ知らねーな

おそらくお前が持ってるのは違法アップロードされた偽物なんだろ。
正規版にはunsigned charへの変換指定が書いてある


 

426 :デフォルトの名無しさん  2013/06/30(日) 09:11:11.21   
何だと?Qは違法な規格票を使用しているのか
これはホットラインセンターに通報した方がいいって事?


 

釣り針にかからなかったので煽ってみる WWWW
427 :デフォルトの名無しさん  2013/06/30(日) 09:22:16.90   
Qzは偽規格書を根拠にextern不要とかほざいてたのか。WWWW
本物にはポータブルじゃないと明記されてるのに。
偽規格書 ワロタ WWWW


 

予想通り、持ってるのは必死でググって入手したworking paper WWWW
437 :◆QZaw55cn4c  2013/06/30(日) 23:07:57.24   
>>425
まっ正確にはTC2なんだけどね.
でも,

>正規版にはunsigned charへの変換指定が書いてある
真っ赤な嘘ですねえ,だって,JIS 検索 http://www.jisc.go.jp/app/pager?id=1267490 で JIS X3010 7.19.6.2 を検索しても unsigned char 用の書式指定子なんて見つかんないですからね
お前さんは scanf() 系のどの書式指定子を unsigned char 用だと思ったの?

>>427
ISO/IEC 9899:1999 6.2.2.5
If the declaration of an identifier for an object has file scope and no storage-class specifier,
its linkage is external.
変数でファイルスコープで extern が書いてなかったら,それは外部リンケージ扱いだよ,ってかいてあるしね.それと ISO/IEC 9899:1999 6.9.2.2 を合わせて考えると extern なんて要らない子なんじゃないかな‥‥
少なくともリンカ次第で C の言語仕様書に書かれる話じゃないし.あと,あくまで C の話ね,C++ じゃないよ.

>>426
そんなもんが pdf でほいほい転がってるの?

>>427
>本物にはポータブルじゃないと明記されてるのに。
該当箇所を引用してみてよ.それで当否を客観的に判断できるでしょ,JIS X3010 でもいいからさー,それとも引用できないほど自信が無いの?

引用する際にはちゃんと引用元を明記しないと,著作権法第48条の3 に違反し,同法122条によれば50万以下の罰金だそう,あと同法123条により親告罪じゃないから,場合によっては起訴されるかもしれないよ.


 

炎上学習法に協力する気はないので拒否る WWWW
438 :デフォルトの名無しさん  2013/06/30(日) 23:12:52.26   
>>437
全部まとめてアマゾンギフト10万円で教えてやるよ。 WWWW


 

439 :◆QZaw55cn4c  2013/06/30(日) 23:17:59.46   
>>438
該当箇所を引用してみてよ.それで当否を客観的に判断できるでしょ,JIS X3010 でもいいからさー,それとも引用できないほど自信が無いの?


 

440 :デフォルトの名無しさん  2013/06/30(日) 23:29:12.03   
>>439
全部まとめてアマゾンギフト10万円で教えてやるよ。 WWWW
騙し取られるのが心配なら、詐欺った場合は刑事事件で告訴すりゃ良いだろ。WWWW


 

441 :◆QZaw55cn4c  2013/06/30(日) 23:53:53.12   
>>440
該当箇所を引用してみてよ.それで当否を客観的に判断できるでしょ,JIS X3010 でもいいからさー,それとも引用できないほど自信が無いの?


 

442 :デフォルトの名無しさん  2013/07/01(月) 00:02:35.76   
>>441
全部まとめてアマゾンギフト10万円で教えてやるよ。 WWWW
騙し取られるのが心配なら、詐欺った場合は刑事事件で告訴すりゃ良いだろ。WWWW


 

443 :◆QZaw55cn4c  2013/07/01(月) 00:32:58.43   
>>442
該当箇所を引用してみてよ.それで当否を客観的に判断できるでしょ,JIS X3010 でもいいからさー,それとも引用できないほど自信が無いの?

あと
>騙し取られるのが心配なら、詐欺った場合は刑事事件で告訴すりゃ良いだろ。
意味不明。大丈夫?豆腐の角にぶつけてみるといいよ


 

しつこいから少し譲歩してやる WWWW
444 :デフォルトの名無しさん  2013/07/01(月) 00:38:03.36   
>>443
自信があるから教授料を要求してるわけだ。WWWW
教授料の支払いを約束するなら、先に>>416を教えてやってもいいぞ。 WWWW


 

445 :デフォルトの名無しさん  2013/07/01(月) 00:41:25.29   
おっと、その前に教えた事が理解出来るかテストだ
>>343に反論してみろ WWWW


 

見事にかかる。しかも予想の遥か斜め上方をいく爆笑自爆。実行ファイルのサイズをlsで調べてドヤ顔 WWWW
447 :◆QZaw55cn4c  2013/07/01(月) 07:01:51.45   
>>343
ごめんね: keyword:Qzでアボーンしていたので見てなかった
ふむ、ひとつの makefile で複数のバイナリ(サーバープログラムとクライアントプログラム、とか)を生成するとき、
特定のバイナリは、くだんのヘッダは読むけれどもそのヘッダにimplyされている全機能や array[] を使うとは限らない、ということはありうるわね

でも手元の gcc では、使わなければ int array[10000] であっても増えないね
ideone ではこうだった
http://ideone.com/Digq4t
http://ideone.com/aYFG9w

>int array[10000];
>では、使う使わないに関わらず領域が確保されてしまう。
処理系依存じゃないの?
処理系依存にうるさい人が処理系依存の事例を挙げるなんてダブルスタンダードもいいとこだね

>>445
回答しといたよ
これは授業料なしで引用していただける資格があると思うよ


 

根本が間違えてるから。 WWWW
449 :◆QZaw55cn4c  2013/07/01(月) 07:08:54.57   
おっとシェアードライブラリの可能性を忘れてたね


 

恥の上塗り。 WWWW
450 :◆QZaw55cn4c  2013/07/01(月) 07:26:20.18   
>>448
手元の cygwin では、-static を付けても dll まではリンクしてくれないから、例示としては不徹底だけれども http://codepad.org/DUJxHDoV
>定義のみで使われない変数や関数はコンパイル時に削除される
そういう賢い処理系もあるようだね。シェアードライブラリのヘッダだったらその中の int array[] とかはどうなるの?

>>445
回答しといたよ
これは授業料なしで引用していただける資格があると思うよ


 

更なるおかわり。 WWWW
451 :◆QZaw55cn4c  2013/07/01(月) 08:03:56.34   
>>450
おっと肝心なところがぬけてたねhttp://codepad.org/wHHXCR5m
なんだか我ながら連投連投で必死だね
こんだけ必死なんだから情けを恵んでやってもいいんじゃないかな>>445


 

屠る WWWW
452 :デフォルトの名無しさん  2013/07/01(月) 08:25:11.18   
>>447
落第。先に教授料10万円はらいな。 WWWW
ideone.com/P9UkTE
ideone.com/TJH0fO
しかし、lsでプログラムのサイズ調べて、ドヤ顔するとは大笑い海水浴場だ。朝から腹痛てー WWWW
渾身の自爆ギャグに免じてこのレス自身は無料レクチャーにしてやるよ。 WWWW

>>448
アホは引っ込んで炉。仮定義オブジェクトの話してるんだから、コンパイラが削除するわけねーだろ。
リンカーなら出来なくはないが、参照され無くても存在する事に意味があるオブジェクトもあるので、
そういう機能が有ったとしてもオプショナルだ。

>>450-451
お前バカなんだから、朝から無駄なエネルギー消費すんな。 WWWW


 

453 :◆QZaw55cn4c  2013/07/01(月) 08:36:02.78   
>>452
>lsでプログラムのサイズ調べて、ドヤ顔するとは大笑い海水浴場だ
たしかに未初期化領域は BSS 領域に展開されるので実行ファイルのサイズをみてどうこうというというのはギャグだねえ
やっぱり>>343は認めなくちゃいけないね

>お前バカなんだから、朝から無駄なエネルギー消費すんな。
ほんとだねえ、今日一日は交通事故に注意しよう‥‥‥


 

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2013年07月02日 00:18