////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


    (C)KAB-studio 1999 - 2001 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com

    送信日： 2001/05/07(Mon) No.106
    配信数： 3810（ Mag2 + Pubzine ）
＊    発行元： まぐまぐ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine( URL: http://www.pubzine.com/  ID: 590 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*                ２００１年５月７日（月）の更新                  */
http://www.kab-studio.com/

・表紙を５月バージョンに。
　毎月恒例、新しい表紙壁紙です。今回は魔法使いな火美ちゃん。結構いい
かも？　ダウンロードは CG Gallery にて。
[ CG Gallery ]
http://www.kab-studio.com/CG/Gallery/


////////////////////////////////////////////////////////////////////
/*                        チョー普通な日記                        */
http://www.kab-studio.com/nikki2/

2001/04/29 (Sun)
　新ＰＣへの移行引き続き。プログラミング関係とか細かいとこ。サービス
パックの入った CD-ROM はちゃんと用意しときましょう。あと日曜と言った
らアニメ色々。最後は花粉症対策の新戦力・紫蘇＆ホワイトグレープドリン
ク。

2001/04/30 (Mon)
　引っ越し前にディスプレイのテスト。５月表紙壁紙を描いてて重いんで、
急遽メモリ２５６Ｍ追加。でもいまいち効果が……。

2001/05/01 (Tue)
　５月表紙壁紙完成！　今回は魔法使いっつーか世紀末救世主な火美ちゃ
ん。今回も制作過程を詳述しています。ちょっとぷらとわ書き。爪切り行方
不明……あとでちゃんと見つかりました(汗)。ホイール調子悪し。まだ反応
がいまいち……。

2001/05/02 (Wed)
　横浜市鶴見区に引っ越しました！　車で持ってってセッティング。ベッド
持ってってないんで広いけど、上方向に積んでないんでいまいち収納性
が……。一番ショックだったのはテレ埼が見られないこと。テレビ神奈川も
画質悪いし。市外局番は０４５です。以前とあんま変わらない……。

2001/05/03 (Thu)
　引っ越し２日目は周辺散策。コインランドリーと１００円ショップをしっ
かり発見。小遣い帳付けたり目玉焼き作ったりと、相変わらず家事を楽しん
でます。そして、我が家のまわりには色々なものが……。

2001/05/04 (Fri)
　横浜駅と２往復。電子レンジとビデオデッキを買っちゃいました。他にも
ハンズでコマンドタブとか１００円ショップでケースとか。そして食料品の
買いもの。最初は野菜少ない……。

2001/05/05 (Sat)
　まず横浜行って目覚ましとまな板置き購入。んでコインランドリーで洗
濯。これは簡単だったけど、干したら乾かない……。あとは牛肉と豚肉の
違いを知ったり、ジャッジマンへの恋で爆笑したり。平和だ……。


////////////////////////////////////////////////////////////////////
/*                         風雅、舞い                             */
http://www.kab-studio.com/Novel/Fuga/

■　序　−６−

「……なんにも、訊かれなかったね」
　ぽつりと、俊雄は言った。
「住所と電話番号は書いてきたから、きっと後で訊きに来るんだよ」
「……ごめんね」
「いいっていいって！　舞さんのおかげで、僕たち助かったようなものなん
だし」
「それにね、あたし知ってたんだ、舞がそういうのできるって」
　３人が、恭子の方を振り向く。
「だって時々、噴水の水とか見て指を揺らせて、見てると水が変な風に飛ん
でいって、ああって」
「なーんだ、私ちゃんとだまし通せていると思ったんだけどな〜」
「俺知らなかった……」
　信吾がぽつりと言い、みんな吹き出す。夕暮れ時、紅色の光が長い影を作
る。４人の表情は、明るかった。
　でも――。
「舞！」
「お兄ちゃん！」
　遠くから走ってくる青年――髪を短く苅って青いジャージを着た、まさに
体育会系の青年――は、想像以上の速さで走ってきて、いきなり舞に抱きつ
いた。
「ちょ、ちょっとお兄ちゃん」
「良かった、良かったよ心配したんだよ！」
「私は大丈夫だから、恥ずかしいって」
「ん？　ああ」
　驚いてる三人の脇で照れながら手を離す舞兄と恥ずかしがりながらちょこ
んとしている舞。
「ええと、あたしの兄の……」
「結白奨です。よろしく」
　ご丁寧に頭を下げる奨に、俊雄と信吾と恭子も頭を下げる
「もう、お兄ちゃん！」
　舞は思いっ切り背中を叩く。なんだよ〜という顔を見せる奨に、舞はぷ
いっとそっぽを向く。
「で……何があったんだ？」
「……式を使った」
　奨に顔を見せないまま、すまなそうにつぶやいた。
「そか」
　そう言ってから、ゆっくりと顔を回していく。パンした視界に入っていく
三人。
「あ、僕たちは全然気にしませんから！　だろ、信吾」
「う、うん」
「私も、ちゃんと黙っています」
　再び視線を舞に戻しても、舞はまだ背を向けたままだった。
「でも、きっとニュースになるよ」
「バカ信吾、そういうこと言うなって」
「んなこと言ったって」
「みんなごめんね」
　視線の集まる舞の背ときれいな黒髪は、小刻みに震えていた。
「ごめんね……」
「舞さん……」
　その俊雄の言葉は、陽と共に沈んでいった。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『人は弱いものなのよ……』
「ど、どうしたの火美ちゃん？」
『普段は気付かないかもしれないけど……』
「あぁ」
『無数の人達に護られていたのに……』
「一人暮らしネタだね」
『今はもういない……』
「ってことは」
『何人も、独りでは生きていけないのに……』
「つまり、火美ちゃんは僕がいないとダメなんだね」
『ちっがーう！！！』
http://www.kab-studio.com/
_______________________________________________________________[KCM]


////////////////////////////////////////////////////////////////////
/*                       #pragma twice                            */
http://www.kab-studio.com/Programing/PragmaTwice/

　Version 6.06
プリプロセッサ色々

「前回は #define の使い方を中心にマクロとかの解説をしてきました」
『よーするにプリプロセッサは使うな！　ってことよね』
「僕的にはね。でも、実際にはもういろんな所で使われてるから。今回はそ
ういう使用例を見つつ、色々なプリプロセッサについて解説します」
『ほい』
「まず、 #define の有効範囲について。たとえばこんな例」

void HasDefine()
{
    #define DEF_FLAG_OK 1
}

void UseDefine()
{
    TRACE( "%d\n", DEF_FLAG_OK );
}

『両方関数だね。上の関数の中で #define で定数作ってて、下の関数の中
でその DEF_FLAG_OK を使ってる……って、それってできるの？』
「できるんです。もし #define じゃなく const int を使ってたらこれはで
きないんだけど、 #define は」
『ただの置き換え！　つまり #define は変数じゃないからそーゆーの関係
ないんだ』
「そういうこと。これが問題になる場合があるんだよね」
『どういうとき？』
「たとえば API の Windef.h に max っていうマクロがあります」

#define max(a,b)            (((a) > (b)) ? (a) : (b))

『右っかわよくわかんない……』
「これは今回はパス。で、 max っていうのはすごくよくある単語だから、
このマクロの存在がまずいことになることがあるんです」
『っつーことは、普通にプログラムで max って単語は使えないんだ』
「そういうこと。しかも、 #define は関数とかネームスペースとか全然関
係ないから」
『上のみたいに、他の関数に土足で踏み込んじゃうとかあるんだねー』
「そこで、この #define を解除するプリプロセッサを紹介します。それは 
#undef 」

void HasDefine()
{
    #define DEF_FLAG_OK 1
    #undef DEF_FLAG_OK    // 解除！
}

void UseDefine()
{
    TRACE( "%d\n", DEF_FLAG_OK );
    // error C2065: 'DEF_FLAG_OK' : 定義されていない識別子です。
}

『おお、 DEF_FLAG_OK が見つかってない！』
「この #undef を使うと、 #define したものを無効にすることができるん
です」
『これでさっきの max とか無効にできるんだね』
「さて、この #undef 以上に使われるのが、 #if 系のプリプロセッサ」
『 #if 系、ってことはいっぱいあるんだ。普通の if と違うの？』
「ううん、基本的には同じ。ゼロ以外か、ゼロか、で分岐されるものはね。
とりあえず例を見て」

#if 1
    TRACE( "IF_FLAG : Non 0 \n" );
#endif

「 #if は、すぐ右側がゼロ以外ならすぐ下から #endif までを残して、ゼ
ロだとその部分を削除します」
『？』
「このままの例だと、 #if の右がゼロ以外だから、上の３行は」

    TRACE( "IF_FLAG : Non 0 \n" );

「ってなります」
『 #if と #endif の間の行が残るって事ね』
「もし #if 0 って書いてあったら、上の３行は」

 

「つまり空白になります」
『つまり、プログラムができたりできなかったり、ってなるんだ。 #endif 
は } 代わりね』
「そう。 { はないけどね」
『ないけど、インデントするのは見やすいから？』
「一応ね。しない人もいるし、場合によって異なるから、これは難しいか
も。次回紹介する例でも紹介するから」
『ふーん。質問！ 1 とか 0 とか書いてるけど、直接書いてたら #if の意
味ないじゃん。コンパイルの前だから、変数とかとも関係ないし』
「同じ、コンパイルの前に数字作れるのあるでしょ」
『ってことは、 #define ？』
「そゆこと。 stdafx.h にこういうのがあるでしょ」

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

「この _MSC_VER を MSDN で見てみて」
『ほいＦ１。【組み込みマクロ】って出た』
「組み込みマクロは、初めっから #define されてる値のこと。こういう値
を使えば」
『 #if で分岐できるわけだ』
「 #pragma once は次回に取っといて、次に #else について」

#if 1
    TRACE( "IF_FLAG : Non 0 \n" );
#else
    TRACE( "IF_FLAG : 0 \n" );
#endif

『普通に else と同じって考えれば、 #if がゼロ以外なら』

    TRACE( "IF_FLAG : Non 0 \n" );

『で、ゼロなら』

    TRACE( "IF_FLAG : 0 \n" );

「そういうこと。もうひとつ #elif について紹介します。これは else if
にあたるもの」

#define DEF_FLAG 15

#if DEF_FLAG < 10
    TRACE( "DEF_FLAG : - 10 \n" );
#elif DEF_FLAG < 20
    TRACE( "DEF_FLAG : 10 - 20 \n" );
#else
    TRACE( "DEF_FLAG : 20 - \n" );
#endif

『 #elif って妙な感じ。ま、 if 系とほとんど同じだから分かりやすいけ
どね』
「そうだね、ほとんど変わらないと思うよ」
『あ、あと #if - #endif の中に #if - #endif を入れる事ってできる？』
「もちろんできるよ。 #if と #endif の間には特に制限はないから」
『ほうほう、だいたい普通の if と同じね』
「さて、ここからちょっと重要。実際には、 #if は使わないか、他と組み
合わせて使うことが多かったりします。その組み合わせる時に使うのは、 
defined というもの」

#define DEF_FLAG

#if defined DEF_FLAG
    TRACE( "DEF_FLAG : Defined \n" );
#else
    TRACE( "DEF_FLAG : Not Defined \n" );
#endif

『 #if のすぐ右にあるね』
「この #if defined は、すぐ右の単語が #define されていればゼロ以外
、されてなかったらゼロと同じように振る舞います」
『ってことは、最初の #define DEF_FLAG をコメントアウトしたら、下の
方だけってことになるんだ』
「そゆこと。ちなみに DEF_FLAG が何に #define されてようが関係ないか
ら」
『そりゃそーね、この例だと空白になってるんだもん』
「あと〈定義されてない場合〉を使うことも多かったりします」

#if !defined DEF_FLAG
    TRACE( "DEF_FLAG : Not Defined \n" );
#else
    TRACE( "DEF_FLAG : Defined \n" );
#endif

『 ! は逆になるんだよね』
「そう、 if の時に使った ! と同じ意味で、この例だと〈 DEF_FLAG が 
#define されていなかったら〉って条件になります」
『ちょっとややこしいかな』
「さらに、 #if defined と #if !defined はよく使われるんで、それぞれ
#ifdef と #ifndef っていうプリプロセッサが用意されてます」
『おお！』
「使い方はほとんど同じ。まず #ifdef 」

#define DEF_FLAG

#ifdef DEF_FLAG
    TRACE( "DEF_FLAG : Defined \n" );
#else
    TRACE( "DEF_FLAG : Not Defined \n" );
#endif

『これはさっきの #if defined と同じね』
「もひとつ #ifndef 」

#define DEF_FLAG

#ifndef DEF_FLAG
    TRACE( "DEF_FLAG : Not Defined \n" );
#else
    TRACE( "DEF_FLAG : Defined \n" );
#endif

『これは #if !defined と同じね』
「で、 #if defined 系と #ifdef 系、どっちを使うかだけど、基本的には
どっちでもいいです」
『そりゃそうよね、機能同じなんだし』
「ただ僕的には #if defined 派かな」
『お、出た水希ちゃん流。その理由は？』
「 #ifdef と #ifndef は n ひとつしか違わないから分かりにくくて。 
#if defined と #if !defined の違う点、 ! の有無は色違いで気付きやす
いから」
『記号だもんね』
「だから僕は #if defined を勧めます」

/*
    Preview Next Story!
*/
『こんなんでプログラムが変わるんだね〜』
「ちょっと楽しい？」
『少し、ね』
「じゃ、来週はその楽しい気持ちをそぎ落としましょう」
『げげ』
「というわけで次回」
＜ Version 6.07 条件コンパイルの世界 ＞
『につづく！』
「火美ちゃんもプリプロセッサ嫌いになれ〜」
『イヤ〜！』


////////////////////////////////////////////////////////////////////
/*              ２００１年５月１４日（月）の更新予定              */
http://www.kab-studio.com/

・更新なし
　引っ越し後のごたごた＆スキャナがない！　ということで。ホットハーブ
開始はいつになるのやら……。


////////////////////////////////////////////////////////////////////
/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.com/nikki2/
・購読登録を解除したいときにはこのページで行なってください。
＊http://www.mag2.com/m/0000012198.htm
＊http://www.pubzine.com/detail.asp?id=000590
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.com/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.com/Info/MailMagazine/

    (C)KAB-studio 1999 - 2001 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com
*/
////////////////////////////////////////////////////////////////////




