非常識を試す2006年8月2日いままでは教科書どおりのコーディングに沿っていろいろ試してみたわけだが、本章ではちょっと趣向を変えてあまり目にすることの無いコーディングを試してみた。(つまり意味が無い)次のプログラムは、C言語の自由表記の部分を強調する意味で書いたものである。7*x+5;}ソースのダウンロードもちろんこれはビルドに成功する。普段コンパイラは不要なスペースやタブ、改行を無視して文法解析を行っているはずだから、上のソースは本来あるべき形をとっていると云えよう。(?)ただ、読みにくいのは見てのとおり。見易くする工夫は個々人のセンスまかせで一向に構わないと思うので、多くの先人が書かれたソースを参考に精進していこうと思う。全角スペースは無視してくれなくて、コンパイラが怒り出すから注意が必要だ。次はちょっと特殊なケース。7;ソースのダウンロード以前、"{}"の後に";"を付けるか付けないかで混乱していた時期があった。間の抜けた話な訳だが、あることを教えてもらって納得できたことがある。i++)foge();と、関数foge()を10回繰り返してみる。i++){foge();muge();}と、こうなるわけだ。i++)foge();;と書くのと同意になってしまうと云うわけ。"{}"はあくまでまとめる為に使うものなのだ。因みに、構造体の宣言などに使う"{}"の後ろに";"がいるのは、それが宣言と云う文章としてそこで終わっているからとのこと。関数の宣言のときに文がひとつしかなければ"{}"でくくる必要も無いんじゃないのかな?と、思って書いたソースが上記のものである。長い説明のあとで申し訳ないが結果は・・・NGである。理由が良く判らないのが情けないことだが、おそらくプロトタイプ宣言を書き損なって";"を付け忘れる人(つまり私)の為にそうなっているんじゃないかなぁ、とか思う。コンパイラのかえすエラーを見て、そんな感じがした。気をとりなおして、次はインクルードに関してのテスト。5;}ソースのダウンロード前章で、インクルードはマクロ展開のようなもの、と書いたわけだが、その仮説が正しければ上のソースはビルドできるはずである。結論は・・・やはりうまくビルドできた。意味の無いソースではあるけれども。当たり前のこととはいえ、リンクはリンカの仕事として立派に(?)独立しているようだ。それを踏まえた上で、次の実験をしてみる。8*x^2+2;}ソースのダウンロードもちろんこれはコンパイルできない。コンパイラはヘッダファイルのみを参考にしてコンパイルを行う為、"main.cpp"をコンパイルしている時は関数E()が存在していないと判断しているのだろう。関数E()は"function.cpp"内でだけ使用することが出来るのである。これが何を意味しているのかは・・・(ニヤリ)さて、基本は充分抑えたと(←うぬぼれです)思うので、次からはいよいよWindowsアプリケーションのプログラミングに入っていこうと思う。今までの地味なプログラミングよりは、きっと華やかで楽しいに違いない。メビウスリング投稿掲示板には詩や歌や小説や日記、ゲームやアニメやコミック、小学生や中学生などの掲示板と過去ログがあります。