K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>山奥に旅に出ているうちに掲示板が進んでました。 > >>この小細工はexternとは同一翻訳単位外のものを取り扱うものだと >>「誤解したプログラマが」書いてたもので >>言語仕様を理解していたプログラマなら書かない代物。 > >どうでしょうか。私が最初にコレ↓を書いた時点では、 >http://kmaebashi.com/programmer/pointer.html >細かい仕様を理解していたかどうかはともかく、extern付きのとそうでないのを >同一コンパイル単位に書いてよい、ということは経験から知っていたと思いますよ >(昔のことですし、証拠を出せといわれても困りますが)。 > >ていうか、変数定義を入れたdefvar.cとextern宣言を入れたextern.hがあったとして、 >defvar.cだけextern.hを#includeしないことは容易です。 >その場合嬉しくないこととしては以下の2点があって、 > >(1)defvar.cとextern.hの間でコンパイラのチェックが働かなくなる。 >(2)似たようなことを2箇所に書かなければならない。 > >774RRさんの説は、(1)を問題視したプログラマがこの小細工を使った、 >というものですよね。(2)はいずれにせよ問題になるんですから。 > >(1)の問題は、int hoge[100];とint *hoge;みたいな問題を起こすので >確かに恐ろしいんですが、(2)の問題も存在するわけですから、 >(1)の問題のため「だけ」にこの小細工が使われた、というのは無理があるように >思います。 > >・この小細工は、(1)の問題の解決には役に立たない(役に立つと思っている > 人がいるとしたら、Cの仕様を知らないだけ)。 >・(2)の問題の解決にはなるが、初期化子が書けなくなるしパーサ通らなくなる > マクロの使い方なのであまり薦められたもんではない。 > >ということであれば同意します。
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!