C言語なら俺に聞け(入門篇) Part 26at TECHC言語なら俺に聞け(入門篇) Part 26 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト700:デフォルトの名無しさん 08/04/24 09:24:27 そこで、gets関数 701:デフォルトの名無しさん 08/04/24 09:43:19 っツーか、面倒くせぇ~からmainへの引数として、実行する際にパラメーターに ファイル名を渡して処理しチャイナと。 702:デフォルトの名無しさん 08/04/24 13:32:34 >>686 わざわざ質問してくださってありがとうございます。 http://pc11.2ch.net/test/read.cgi/tech/1201153965/139 の後半で述べられてることについて、こちらでも確認しました。 片方のみ初期化すると、その初期値で定義され、両方初期化すると $ gcc src?.c /tmp/cc4a7Yre.o:(.data+0x0): multiple definition of `a' /tmp/ccwrP69I.o:(.bss+0x0): first defined here collect2: ld はステータス 1 で終了しました と望むエラーメッセージが表示されました。 ちなみにわたしはグローバル変数について勘違いしていたようです。 グローバル変数の宣言は、0での初期化が同時に行われると思っていたのですが、 実際は実行時に0で初期化される.bss領域ということを失念しておりました。 一応nmでシンボルのフラグをチェックしてみたところ、>>637は.bss領域にあり、 片方だけ明示的に初期化してもう片方にexternを使用すると.data領域に確保されることを確認しました。 グローバル変数は普通、明示的に初期化して使うものなんでしょうね。 グローバル変数を使う機会が多くないもので知りませんでした。 ありがとうございました。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch