- 1 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:52:45 ]
- このスレは標準C規格や規格に合致した移植性の高い記法・技法に関するスレです。
C言語初心者の初歩的な質問、GUIなどの標準Cではできない事の質問、 ソース丸投げ、宿題、書籍 などは専門の別スレッド↓があるのでそちらへ。 C言語なら俺に聞け(入門篇) Part 24 pc11.2ch.net/test/read.cgi/tech/1201083176/ 【初心者歓迎】C/C++室 Ver.47【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1200464091/ C/C++の宿題を片付けます 103代目 pc11.2ch.net/test/read.cgi/tech/1200318925/ 【書き込む前に】 ・まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。 ・質問する前には最低限検索を。 ・エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。 【参考文献】 C FAQ 日本語訳 www.kouno.jp/home/c_faq/ Cプログラマ必読 ・プログラミング言語C(通称 K&R) www.amazon.co.jp/exec/obidos/ASIN/4320026926/250-7563469-9920244 【このスレのログ】 前スレ:pc11.2ch.net/test/read.cgi/tech/1190261457/ 他の過去ログ:nssearch.hp.infoseek.co.jp/clang/ 【このスレ住人としての心得】 わざとスレ違いあるいはごく低レベルな質問を繰り返して 流れを妨害する荒らしがいます。適当に誘導して放置してください。
- 139 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 22:31:34 ]
- みんなあんまり適当な事言うなよ?
>>133 あまり知られていないが、これは 「仮定義(tentative definition)」 という仕様。 extern も static もついていない、初期化を伴わないグローバル変数の宣言は 「仮定義」 と見なされる。 対する、extern も static もついていない、初期化を伴うグローバル変数の宣言は 「外部定義(external definition)」 と見なされる。 外部定義は必ず実体定義を伴う。 外部定義が複数あると、二重定義となりエラーとなる。 しかし、仮定義は他に実体定義がなければ実体を定義し、 他に実体定義があれば実体定義を伴わない単なる宣言と見なされる。 複数の仮定義を書いた場合、実体は1つだけ定義され、それらの仮定義は実体を共有する。 つまり、>>133 は仕様。
- 140 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 22:35:35 ]
- ちなみにこの仕様は C++ で廃止された。
C++ では仮定義がなくなり、 extern も static もついていない、初期化を伴わないグローバル変数の宣言も 外部定義と見なされ、実体定義を伴う。 このあたりの違いの話は C++ の規格の付録に書いてある。
|

|