C言語なら俺に聞け(入門編)Part 116
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/06/14(金) 20:22:05.73★前スレ
C言語なら俺に聞け(入門編)Part 115
http://toro.2ch.net/test/read.cgi/tech/1368444993/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 164代目
http://toro.2ch.net/test/read.cgi/tech/1370255305/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
# サイズが大きい場合はアップローダ等を利用してください。
http://codepad.org/C/C++の宿題片付けます 165代目
http://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
手元の cygwin では、-static を付けても dll まではリンクしてくれないから、例示としては不徹底だけれども http://codepad.org/DUJxHDoV
>定義のみで使われない変数や関数はコンパイル時に削除される
そういう賢い処理系もあるようだね。シェアードライブラリのヘッダだったらその中の int array[] とかはどうなるの?
>>445
回答しといたよ
これは授業料なしで引用していただける資格があると思うよ
おっと肝心なところがぬけてたねhttp://codepad.org/wHHXCR5m
なんだか我ながら連投連投で必死だね
こんだけ必死なんだから情けを恵んでやってもいいんじゃないかな >>445
0452デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN落第。先に教授料10万円はらいな。 WWWW
ideone.com/P9UkTE
ideone.com/TJH0fO
しかし、lsでプログラムのサイズ調べて、ドヤ顔するとは大笑い海水浴場だ。朝から腹痛てー WWWW
渾身の自爆ギャグに免じてこのレス自身は無料レクチャーにしてやるよ。 WWWW
>>448
アホは引っ込んで炉。仮定義オブジェクトの話してるんだから、コンパイラが削除するわけねーだろ。
リンカーなら出来なくはないが、参照され無くても存在する事に意味があるオブジェクトもあるので、
そういう機能が有ったとしてもオプショナルだ。
>>450-451
お前バカなんだから、朝から無駄なエネルギー消費すんな。 WWWW
>lsでプログラムのサイズ調べて、ドヤ顔するとは大笑い海水浴場だ
たしかに未初期化領域は BSS 領域に展開されるので実行ファイルのサイズをみてどうこうというというのはギャグだねえ
やっぱり >>343 は認めなくちゃいけないね
>お前バカなんだから、朝から無駄なエネルギー消費すんな。
ほんとだねえ、今日一日は交通事故に注意しよう‥‥‥
0454デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANうんそうだね、仮定義をコンパイラが削除するわけねーな
その続きがイミフだけど、仮定義って何だかご存知?
0455デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANそれじゃ、教授料10万円相当は先払い。
後払い権得られるチャンスだったのに残念だったな。 WWWW
>>454
仮定義オブジェクトをコンパイラが削除するとか言い出す初心者にはわからなくても無理はない。WWWW
レクチャーしてやろうか?有料で WWWW
0456454
2013/07/01(月) NY:AN:NY.ANキョージュさん、俺の言ったことよく読んでね
0457デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN>その続きがイミフだけど、
イミフなのはお前が低脳だから。レクチャーしてやろうか? 有料で WWW
> 仮定義って何だかご存知?
知ってるけど、それがなにか?WWWW
0458デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANイミフが意味不明だったんなら、もっとはっきり言ってやる
仮定義はリンカも削除はしねえんだよ、出来なくないんじゃない
0459デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANそういう機能を持つリンカー実在するけど、それが何か? WWWW
0460デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN環境依存スレへどうぞ
0461デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANつまり、>>452は全てのリンカーがそういう機能を持つという主張と誤読したのか WWWW
恐るべき低読解力 WWWW
0462デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0463デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN低脳はお前だよ
すごい誤読w
0464デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN>>460はお前じゃないという主張か。それなら>>459に戻る事になって
>仮定義はリンカも削除はしねえんだよ、出来なくないんじゃない
仮定義オブジェクトを削除する機能を持つリンカー実在するけど。WWWW
0465デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0466デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANそういう話になるとスレ違いだっつーの
頭悪いなあ
0467デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANいやどうも前頭葉に欠陥があるアホが一匹紛れ込んでるようで
0468デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANアホが二匹いるから荒れる
0469デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANお前一匹だけだよ馬鹿は
0470デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN>仮定義はリンカも削除はしねえんだよ、出来なくないんじゃない
これがスレ違いでは無く、
>仮定義オブジェクトを削除する機能を持つリンカー実在するけど。WWWW
これがスレ違い? バカの思考回路はまったくわからない WWWW
やっぱ、バカは駆逐すべきだな WWWW
0471デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANうん、スレ違い
それは環境依存の話
専用のスレがあるからそこに行って
0472デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANそんなら「イミフ」じゃなくて「スレ違い」だろ。 WWWW
バカの後知恵はやっぱりバカ WWWW
0473デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN今後 198ぽ と名乗ってくれ
0474デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN「イミフ」なんて言ってませんよ
人違いでは?
0476デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN引っ込むか引っ込まないかは俺が決める事
お前に言われる筋合いはない
0477デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANお前にたいして、引っ込んで炉とか死んでしまえとか駆逐してやるとか、罵る権利はオレの固有の権利
死んでしまえゴミクズ WWWW
0478デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \
0479デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANこりゃいい
0480デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANこのようにIDなどなくても自分であぼ〜ん出来ます
0481デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0482デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANキチガイの発言を手であぼ〜んしてるだけだからな
0483デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0484デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0485デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANやっぱり頭おかしいな
0486デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANあぼーんされる→もはやレスを返す価値もない
0487デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN反論できなくて悔し紛れに勝利宣言して逃げてるのと同じように見えるわ。
0488デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN死んでしまえゴミクズ WWWW
0489デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0490デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0491デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0492デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN人の事を馬鹿呼ばわりする位しか出来ない
いい線いってたと思ったんだけど勘違いか?じゃ、>>343 回答を訂正するね
>extern int array[10000];
>こういう定義がふくまれるヘッダーファイル
ってことは、少なくとも一つどこかに実体を定義しているんだね。なお、extern だから宣言だね
>arrayを使っている(定義している)モジュールをリンクしなければarrayの領域は確保されないが、
>int array[10000];
>では、使う使わないに関わらず領域が確保されてしまう。
そりゃそうだがそのarray[10000] 含みのヘッダをインクルードするんだから
array[10000] を実質的に定義しているモジュールもいずれはリンクするんでしょう?
extern の有無に関わらず、その二つかそれ以上のモジュールで共用する array[] が一つ確保されるんだから問題ないんじゃないの?
え?array[10000] を定義しているモジュールをリンクしないの?そのヘッダをインクルードする .c ファイルが一つだけ?それってなんの意味があるの?
二箇所以上のところから参照されるからこそ、共通部分ヘッダとして切り分けて分割コンパイルするわけでしょ?
一つの *.c ファイルしかインクルードしないヘッダに意味はないし、そこで領域を無駄に確保するとかいわれてもねえ‥‥その array[10000] は .c に書くのが常識よね
同じ阿呆なら踊れ、踊りまくれ!!
>参照され無くても存在する事に意味があるオブジェクトもある
参照されなくても、というのはちょっと言いすぎだとおもうけど、volatile を付けたくなるやつが雰囲気似ているよね、まだまじめに使ったことは一度もないけれども
荒れているようにみえて結構たのしいんですけど
0497デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANバカをバカと罵って何が悪い。WWWW
今朝の自爆ギャグには感動したので、まとめてみた WWWW
www54.atwiki.jp/qzaw55cn4c/pages/16.html
0498デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANwindows.h
はい、論破 WWWW
>>495
> 参照されなくても、というのはちょっと言いすぎだとおもうけど、volatile を付けたくなるやつが雰囲気似ているよね、まだまじめに使ったことは一度もないけれども
全然違う。宿題コーダーには永遠に縁のないプログラミングテクニックだから知らんでもいい。WWWW
>windows.h はい、論破 WWWW
インポートライブラリ‥‥‥
0500デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0501デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANちゃんとmutex使わないとやばい
0502デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANまだ足掻くのか? まとめるぞ WWWW
単一のヘッダーに複数のオブジェクトモジュールの宣言をまとめて記述する事は当たり前に行われている。
しかし、lsで調べるという発想には唯々、笑うばかりだ、あー腹痛てー
0503デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN動画にしてYouTubeにアップしてくれ
volatile だけじゃだめね、消えない呪文にすぎないから
>>500
全然、自信たっぷりじゃないと思うんだけれど‥‥
windows.h に仮定義が見当たらないのでちょっと困ってる
>>502
>一のヘッダーに複数のオブジェクトモジュールの宣言をまとめて記述する事
すりかえないでね。
今言及しているのは一つのオブジェクトモジュールでしか使用されない宣言をヘッダに追い出していること
*.lib や *.dll 用のヘッダでリンクないしはダイナミックリンクしたときに実体が増殖するものがあるの?
>lsで調べるという発想
たしかにどーかしてた、これは末代までの恥
0505デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN相手した俺がバカだった
0506デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANすり替えてねーぞ
複数のオブジェクトモジュールの宣言を一つのヘッダーファイルにまとめる事は常識
>>343は、その中の一つのオブジェクトモジュールがexternな変数を公開しているケースを指摘している。
windows.hはlsでファイルサイズ調べるような低脳だから、一つのヘッダーファイルにまとめるという常識がないと予想して例示したに過ぎない。 WWWW
いや、すりかえてるね。
windows.h に仮に仮定義があったとして、そうすると、windows.h がその宣言をとりまとめているオブジェクトモジュール(kernel32.dll, user32.dll, gdi32.dll) にその仮定義の実体があるんだよね
そのとき、windows.h の仮定義により、(ダイナミック)リンクした結果、その仮定義の実体が増殖するの?
>>343 は増殖すると主張しているように見えるんだけど。
>複数のオブジェクトモジュールの宣言を一つのヘッダーファイルにまとめる事は常識
で、そんなときに仮定義を使用してもその仮定義により共用される領域が一つつくられるだけで問題ないよね。
複数の *.c のヘッダを一つの *.h にまとめて書く状況において、リンクした結果仮定義を使用して「無駄な領域」が生成される事例があるのなら、例示してみてよ
0508デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANマジで入院してくれ
そのうちリアルで事件でも起こしそうな雰囲気
0509デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANほらよ、キチ外。まだ恥晒し続けるのか? WWWW
お前はヘボでこの板の最下層だって事を理解しろよ。 WWWW
w.c:
#include <windows.h>
int main(){ return 0;}
objidl.hをカレントディレクトリにコピーし、
objidl.hのEXTERN_C const IIDをなんでもいいけど、例えば
EXTERN_C const IID IID_IMarshal;を
const IID IID_IMarshal;に変更
cl -I. w.c /link /opt:noref /map
w.mapには
0003:00001ef0 IID_IMarshal 000000014000def0 <common>
と領域が確保されたことが出力されている
さっきの変更を戻し再コンパイルすれば
w.mapには当然のことながらIID_IMarshalのエントリは無い。
0510デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN>>497のWikiに是非まとめといてくれww
そして>>497のURLは次のスレの頭に貼ろうぜw
0511デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0512デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN価値のある情報が一つもない肥溜めみたいなスレだなw
0513デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0514デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0515デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANhttp://livedoor.blogimg.jp/news23vip/imgs/1/d/1dba13cc.jpg
0516デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANlsの笑撃に比べると、まとめるモチベーション上がらない。WWWW
>>515
QzはJavaも知らないぞ。二分木を実装出来なくて、欠陥言語認定してる。 WWWW
0517デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANんなあほな。
0518デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANこれらのファイルをどう判別したらいいのでしょうか?
0519デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0520デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANページ追加 WWWW
www54.atwiki.jp/qzaw55cn4c/pages/17.html
0521デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANナイスww
0522デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANmp4コンテナの仕様書を入手する。
それを参照してプログラムを作る。
0523デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANshort int sia = 32768;
の場合、
printf("sia=%d sia+1=%d\n", sia, sia+1);
で出力した場合、オーバーフローを起こして
sia=-32768 sia+1=-32767
となりますが、
short int sia = 32767;
の場合、上記同様の出力をおこなった場合、
sia=32767 sia+1=32768
となります。なぜsia+1はオーバーフローを起こさないのでしょうか?
0524デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANint に暗黙にキャストされてるんじゃね?
0525デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANやはり暗黙に型変換されてるっぽいんですね・・・。ありがとうございます。
環境:vs2010ee
0526デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANだな
前者も後者も sia + 1 を評価する前に sia が型プロモーションを受けてintに格上げされる
その場合short int = 16bit、int = 16bit or 32bit or 64bit だと、最上位ビットが符号ビットと
して扱われて int になるので負になる
0527デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN0528デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN(short)(sia+1)
で、オーバーフロー(-32768)になりました。こんな書き方あるんですね。勉強になりました。
ありがとう。
0529デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN悪い癖があるからなあ
まあそのお陰で規格票の謎の文の意味が理解出来た事もあるけど
0530デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANオーバーフロー時の挙動は規格Cとして未定義なので
厳密には正しいCプログラムとして成立していない
(unsignedな変数の場合は別)
いくらなんでもそりゃすりかえでっせ.
調べるんだったら extern の有無によっては,リンク後の結果でライブラリ側のシンボル先のオブジェクトと呼び出し側のシンボル先のオブジェクトが同一じゃないことがあるってことじゃないかのう?
MSVC はよく知らんので mingw で示してくれんかのう
それにしても,ちっ,cl って,dll 内の変数をインポートするのに,いちいち __declspec(dllimport) つけなきゃならんのかよ,.わざわざ .def まで書かせといてこれかい,
link, おまえ, *.lib の中のシンボルくらいさがしてくれよー.
端から対称性がないんだったらこりゃ,ネタも使えんわ
http://msdn.microsoft.com/ja-jp/library/hyx1zcd3(v=vs.90).aspx
main.c http://codepad.org/XsM9VPRk
sub.c http://codepad.org/URWK3dP2
sub..h http://codepad.org/Q0LMfmMB
sub.def http://codepad.org/rMIhklQX
ふつうの makefile http://codepad.org/PFPv5wRU
dll を作る makefile http://codepad.org/gM6YbWIS
追加しといてね.
0533デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN出来ればC入門者の私にも解るように纏めて欲しい
0534デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANなんのためにffprobeがあるとおもってんの?
0535デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN>arrayを使っている(定義している)モジュールをリンクしなければarrayの領域は確保されないが、
こんな簡単なお題すら記憶しておけない低容量脳。WWWW
そんな脳だから何年やっても最下層のヘボからねけだせねーんだよ。WWWW
すりかえんなよ。WWWW
まあね
対称性ないしは直交性を追求しているだけなんでね
makefile を変えるだけで 静的リンクと動的リンクをすんなり変えることができればいいんだが、仮定義を絡めると実際の実装ではそうもいかないようだ
そもそも対称的とはいえない(例えば *.dll や *.so を作る人と使う人が同一とは限らない)場合も含めての、例えば extern 抜き主張が無理筋なのは、ある意味仕方のないこと
つきあってくれてありがとね
0537デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN一刀両断が鮮やかすぎて、うなじの急所を削ぎ落された事に気付いてないのか。wwww
> そりゃそうだがそのarray[10000] 含みのヘッダをインクルードするんだから
> array[10000] を実質的に定義しているモジュールもいずれはリンクするんでしょう?
これは完全否定されている。wwww
実例: windows.h wwww
削ぎ落した肉片を見せてやらないと気付かない奇行種。 wwww
巨人並みの生命力だけは評価してやる wwww
0538デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN> link, おまえ, *.lib の中のシンボルくらいさがしてくれよー.
dllの仕組みを理解してないのに無理してごまかそうとすると、こういう恥ずかしい発言することになる。wwww
自分の傷口に指突っ込んで広げる奇行種。wwww
0539デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN> つきあってくれてありがとね
降参か? 最下層のヘボという事を自覚する事だ wwww
↓これも取り下げか? wwww
それとも有料レッスンしてやろうか? wwww
From: [437] ◆QZaw55cn4c <sage>
Date: 2013/06/30(日) NY:AN:NY.AN
>正規版にはunsigned charへの変換指定が書いてある
真っ赤な嘘ですねえ,だって,JIS 検索 http://www.jisc.go.jp/app/pager?id=1267490 で JIS X3010 7.19.6.2 を検索しても unsigned char 用の書式指定子なんて見つかんないですからね
お前さんは scanf() 系のどの書式指定子を unsigned char 用だと思ったの?
0540デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANワロスwww
Wikiネタがまた増えたなwww
0541デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN0542デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANqzはhh知らんのか
つかid=1267490って何処見てたんだ?
0543デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANおま、それは有料の情報。wwww
検索って言ってるから画像のpdfなのにctrl-fで文字列検索したんじゃないかな。wwww
0544デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN貧乏人ですまん。有料ページだったのかw
金出したのに見つけられないってことかwww
無料ページで検索かけてもすぐ見つかるのに何やってんだ奴はwww
0545デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN0546デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANQzに有料でレクチャーしてやることにしていた情報。wwww
こんなクソみたいな情報でも持たない者にとってはとても重要。
知っていれば>>437のような醜態を晒さずに済む。wwww
0547デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANまあアレは自称上級者で宿題スレに他人のコードを平気で張るキチガイだからw
0548デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANJIS規格番号からJISを検索
「X3010」を入力。
PDFがダウンロードできるようになる。
著作権で保護されていることに同意する。
後は、分かるな。
無料なのに、試したことがないのか。
■ このスレッドは過去ログ倉庫に格納されています