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

    KAB-studio.h


    (C)KAB-studio 1999 - 2005 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz

    送信日： 2005/05/09(Mon) No.306
    配信数： 1970
    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
// NEW!!
http://www.kab-studio.biz/index.html

2005/05/09 (Mon)
　ほとはー外伝３にP.17を追加！
[ 三人合体ホットハーブ 外伝３ 【ワタシ の キロク】 ]
http://www.kab-studio.biz/Comic/HotHerbA3/index.html

2005/05/09 (Mon)
　風雅、舞い ホームページ版にアーカイブ追加！
第四章 ふたりの勇者
[ 風雅、舞い ]
http://www.kab-studio.biz/Novel/Fuga/index.html

2005/05/09 (Mon)
　#pragma twice ホームページ版にアーカイブ追加！
11.15 文字列配列の拡張
11.16 簡単なクラスを作ってみよう！
[ #pragma twice ]
http://www.kab-studio.biz/Programing/PragmaTwice/index.html


////////////////////////////////////////////////////////////////////
// ちょお普通な日記
http://www.kab-studio.biz/nikki2/index.html

2005/05/01 (Sun)
　１０時に起きて午前中は巡回先回ったり。午後は JavaA2Z の単語追加と
かぶヘッダーの送信予約、さらに再び JavaA2Z の単語追加。明日は５月の
方針を決めて、あとダビングする予定。

2005/05/02 (Mon)
　１０時起き。午前中は洗濯。午後は JavaA2Z 。後回しにしてるのが結構
ある。平行してダビング。アニメ以外のが負担……なので方針変更。あとは
散歩とか。 T3 どう？

2005/05/03 (Tue)
　１１時半起き。目覚まし追加する？　あまかいのロゴと HTML を作成。
テーマカラーは緑と黄色。マスコットキャラクターも。そして T3 ではなく
らぶデス。

2005/05/04 (Wed)
　１０時起き。午前中はやる気しない……。あまかいの Amazon から
カテゴリ別ランキングを取得する機能を作る。 XML の取得と Jakarta 
Commons の Digester でのパーシング。作るとこ多い。あまかいは明日ま
で。

2005/05/05 (Thu)
　昨日の夜中にバルドフォースエグゼをしたら気付いたら朝だった。２時か
らあまかい作り。引きつづき Amazon の広告のとこを作成。夕方にぶらりと
散歩して鶴見から横浜まで踏破。２時間歩いたんで足の裏が痛い。

2005/05/06 (Fri)
　１０時半に起きてハローワークへ。前と同じように検索。前のがそのまま
残ってる？　帰ってからはのんびりモード……。そしてGW。

2005/05/07 (Sat)
　昨日の夜中に JavaA2Z のバージョンアップ。 Amazonアソシエイト広告を
追加。今日は１１時半起き。うだうだモード。昨日追加した機能にバグが。
夜１０時くらいにほとはー外伝３描き。そして辞めるなよ。


////////////////////////////////////////////////////////////////////
// かぶろぐ。
http://d.hatena.ne.jp/kab_studio/

2005/05/01 (Sun)
http://d.hatena.ne.jp/kab_studio/20050501
起きた。
ダーツゲーム。
[JavaA2Z]単語追加。
[ほとはー]ほとはー外伝３ P.16
風雅、舞い追加。
[Prog]ぷらとわ追加。
[JavaA2Z]単語追加(2)。
[アニメ]まほらば 第18話「にゃーにゃーにゃー」
[買]まんがタイムきららMAX
[アニメ]おねがいマイメロディ 第5話「優勝できたらイイナ！」
[JavaA2Z]超マイナーバージョンアップ。

2005/05/02 (Mon)
http://d.hatena.ne.jp/kab_studio/20050502
起きた。
[アニメ]学園アリス 「総集編☆もう一度会いたい」
[アニメ]ふしぎ星の☆ふたご姫 第5話「今度は優勝☆プリンセスパーティ」
[JavaA2Z]単語追加。
[アニメ]魔法戦隊マジレンジャー 
    第12話「決意のしるし〜マージ・ジルマ・マジ・マジカ〜」
きっかけは「一年戦争」──ナムコ・バンダイの進化論
[アニメ]勇者王ガオガイガーFINAL 第4話「GGG追放命令」
[アニメ]こみっくパーティーRevolution 第5話「熱闘! コスプレファイト」
[Machician]第６話 祭の夜に (26) [△]
[Machician]第５話あとがき

2005/05/03 (Tue)
http://d.hatena.ne.jp/kab_studio/20050503
起きた。
[JavaA2Z]単語追加。
[アニメ]ゾイド ジェネシス 第4話「はじめての街」
松坂、１３日からの巨人戦回避
WBSやってない……。
[あまかい]タイトルバナー。

2005/05/04 (Wed)
http://d.hatena.ne.jp/kab_studio/20050504
起きたんじゃよー。
[アニメ]攻殻機動隊 S.A.C. 2nd GIG 第5話「潜在熱源」
あなたの才能引き出します。
[アニメ]交響詩篇エウレカセブン 第3話「モーション・ブルー」
[JavaA2Z]単語追加。
[あまかい]めんどくせー（爆）。
[あまかい]パーシングの目処がついた。
見逃した。
見逃した2。
[あまかい]ソートされねー！！
[アニメ]極上生徒会 第5話「華麗なる対決」

2005/05/05 (Thu)
http://d.hatena.ne.jp/kab_studio/20050505
起きた。
[あまかい]データクラスが増えていく。
[あまかい]ログどうしよう。
大散歩。
[JavaA2Z]単語追加。

2005/05/06 (Fri)
http://d.hatena.ne.jp/kab_studio/20050506
[辞職][教職]ハローワーク行ってきた。
sakusaku
[JavaA2Z]単語追加。
散歩しなきゃ症候群（シンドローム）。
楽天ｘ巨人戦。
ブログモード本稼働間近？
はてなアイデア投票一覧。
はてなポイント購入。
ふと思った。
[JavaA2Z]マイナーバージョンアップ！！
ってゆーか。

2005/05/07 (Sat)
http://d.hatena.ne.jp/kab_studio/20050507
寒っ！！
[アニメ]学園アリス 第25話「学園を取り戻せ☆」
[アニメ]ふしぎ星の☆ふたご姫 
    第6話「占いで知りたい☆エクリプスの秘密」
[JavaA2Z]単語追加。
[JavaA2Z]例外発生。
[JavaA2Z]バグ修正。
左右逆。
Google AdSense。
珍たまご：“しっぽ”付き卵が近所の話題に


////////////////////////////////////////////////////////////////////
// 風雅、舞い
http://www.kab-studio.biz/Novel/Fuga/index.html

■　第十二章　超越する存在　−１１−

　駐車場にミニバスが入る。雅樹、舞、俊雄、リシュネ、少年、智子、左が
乗り込む。
　３０分ほどで小さな飛行場へと到着し、滑走路に駐機してあるカーキ色の
巨大な軍用輸送機を舞と俊雄は見上げる。
「でけー」
　雅樹は感嘆の声を上げ、リシュネ達は気にせずに乗り込む。案内されたス
ペースは外観からは想像できないスイートルーム。ゆったりくつろげる
ソファ、カウンターの向こうには銀色のシンクと冷蔵庫。
「なるほどな」
「？」
「あの向こう側は指揮室になってるんだと。その機械で監視するんだろ」
「監視ではなくてモニタリング」
　智子が雅樹の言葉を継ぐ。
「リシュネ達の演習記録を録るためのものよ。もちろんあなた達のもモニタ
リングさせてもらうけど、基本的には地下室で録っていたものと同じものだ
から」
「俺たちゃ実験体だもんな」
「否定はしないわ。報酬もあるし」
　銀色の冷蔵庫からワインを取り出す。
「しっかし」
　雅樹がワインを手に取り、隣にいるであろう穂香に見せる。
「こんだけの金がどっから出てくるんだ？　前は国がスポンサーだったって
聞いたけど」
「その穂香さんはまだそこまで調査できてないの？」
「今コンピューターの勉強中なんだ」
　智子がくすりと笑う。
「いや、ボケじゃなくて本当に」
「……本当に？」
「穂香は可視光だけじゃなく赤外線や紫外線も見えるし、それ以外の電磁波
も見ようと思えば見えるんだ。だからコンピューターの中身を直接読み取る
こともできるんだよ。ま、コンピューターはコンピューターの言葉があるら
しいから、それを勉強してる途中なんだけど。え、違う？」
　雅樹は脇を向き、眉間に皺を寄せて聞いていた。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
「え、えっ、えっ？　ええっ！？」
　ジャージは顔を真っ赤に染め上げて、ただひたすら驚く。
「……そんなに驚かないでくださいよ……いい大人が」
「う”、悪かったわね、経験なくて」

Machician 第７話 灰色の鬼、白き翼 連載開始！
[ Machician ]
http://d.hatena.ne.jp/kab_studio/20040823#1093276416
[ Machician＋設定 最新一覧 ]
http://d.hatena.ne.jp/kab_studio/searchdiary?word=*%5BMachician
_______________________________________________________________[KCM]

////////////////////////////////////////////////////////////////////
// JavaA2Z
http://www.kab-studio.biz/Programing/JavaA2Z/index.html

■追加・更新単語

派生クラス
GUI
CUI
ブレークポイント
パッケージ
package
パッケージ名
import
Serializable
直列化
シリアライズ
クラス変数
ハッシュ値
再帰呼び出し
args
HashSet
子クラス
親クラス
2進数
整数リテラル
文字
文字リテラル
Unicode
文字コード
substring
length
補数
init
16進数
0x
final変数
finalメソッド
finalクラス
final
static final
累乗
スタック
LIFO
FILO
スタックトレース
インポート
乱数
ランダム
CSV
IEEE
コーヒー
セマンティクス
シンタックス
2進法
10進数
LinkedList
全角
半角
半角カタカナ
大文字
小文字
nullリテラル
booleanリテラル
true
false
Boolean
short
Short


////////////////////////////////////////////////////////////////////
// #pragma twice
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 15.06
ヘッダーファイルを２度読み込む？

「前回は、ヘッダーファイルをインクルードする順番について説明しまし
た」
『ちゃんと順番を考えてインクルードしないとダメなのよね……』
「でも、それ以外にやっかいな問題がヘッダーファイルにはあるんです」
『げげ』
「ヘッダーファイルはソースファイルの代わりになるって説明しました」
『単なる置き換えなんだもんね』
「だから、こんなこともできます」

// Sub.h

#include <Windows.h>

『げ、ヘッダーファイルでインクルードしてる！！』
「実際、前回のように〈インクルードする順番〉が関係してくる場合、
ヘッダーファイル内で〈必要なヘッダーファイルをインクルードしておく〉
というのはよく使われるパターンなんです」
『そか、そうすれば順番気にするどころか、 Typedef.h をインクルードし
なきゃって考える必要もないんだ。なんだ便利じゃない』
「でもはたしてそうでしょうか、というのが今回の話」

・循環参照

『じゅんかんさんしょう？』
「簡単に言うと、蛇が自分のしっぽを食べるような感じ」
『ぐるぐるぐるぐる……』
「たとえば Sub.h をこんなふうにしたり」

// Sub.h

#include "Sub.h"

『げ、 Sub.h が Sub.h インクルードしてる！　これやるとずーっと
インクルードし続けちゃうわけね』
「実際にはこういうコンパイルエラーになります」

fatal error C1076: 
    コンパイラの制限 : ヒープの領域を使い果たしました; 
    上限を設定するために /Zm オプションを使用してください。

「ヒープっていうのはメモリ領域のこと。コンパイルする時、
ソースファイルやヘッダーファイルをメモリに書き込んでそれをコンパイル
するんだけど、そのメモリが足りなくなったってエラー」
『永遠にインクルードされるんだから当然なるわよねー。でもこれ、絶対あ
り得ないと思うんだけど』
「じゃあこれは？　Sub.h はこうで」

// Sub.h

#include "Typedef.h"

「 Typedef.h はこう」

// Typedef.h

#include "Sub.h"

『あー……複数のヘッダーファイルを経由してぐるっと一周……』
「こういうことがあるから、ヘッダーファイルの中で他のヘッダーファイル
をインクルードするときには細心の注意が必要、かな」
『てかこれやっちゃいそう……』
「次は、二重定義」

・複数のヘッダーファイルでの二重定義

「まず Main.cpp がこう」

// Main.cpp
#include <Windows.h>

#include "Typedef.h"
#include "Sub.h"

int WINAPI WinMain
    ( HINSTANCE p_hInstance
    , HINSTANCE p_hPrevInstance
    , LPSTR p_pchCmdLine
    , int p_iCmdShow
    )
{
    return 0;
}

「次に Typedef.h 」

// Typedef.h

struct DATA
{
    int m_i;
};

『あ、構造体だ、懐かし〜』
「最後に Sub.h 」

// Sub.h

#include "Typedef.h"

『あ、 Typedef.h をインクルードしてる……けど、今回は循環参照じゃな
いよね。なら大丈夫そうだけど』
「全然大丈夫じゃないんです」
『へ？　ビルド……あ、エラー』

typedef.h(4) : error C2011: 
    'DATA' : 'struct' で示される型としてすでに定義されています。

「つまり、構造体 DATA がふたつもあるから」
『すでに定義されているのに再定義しようとしたからエラー……』
「これはとても良くあるパターンなんです。ヘッダーファイルから
ヘッダーファイルをインクルードする、ってすると簡単に起きます」
『やっぱりそれって良くないのねー』
「でも実は、 API やランタイムでは、二重に読み込むなんて普通にあるこ
となんです」
『？　それってつまり、回避策があるってこと？』
「そういうこと。多分火美ちゃんも見たことあると思うけど」

// Typedef.h

#ifndef _TYPEDEF_H_
#define _TYPEDEF_H_

struct DATA
{
    int m_i;
};

#endif // _TYPEDEF_H_

『あ！　見たことある！　この #ifndef 使ったの！！』
「 Stdafx.h とかの、 MFC 使う時に作られるヘッダーファイルは全部こう
なってるし、 API や ランタイム、 MFC のヘッダーファイルもこうなって
るでしょ」
『うん、そういうので見たことある』
「それに、 Version 6.07 ( No.107 ) で」
『そっか、 #ifndef のプリプロセッサ教えてもらったときにやったんだ
ね』
「もう一度簡単に説明すると」

#ifndef _TYPEDEF_H_
// 中身
#endif // _TYPEDEF_H_

「は、 _TYPEDEF_H_ が #define て定義されて〈いない〉場合にのみ
〈中身〉が有効になります。もし _TYPEDEF_H_ が定義されていたら、
〈中身〉は空白に置き換わります」
『なくなっちゃうわけね』
「初めてこのヘッダーファイルがインクルードされた時には、 _TYPEDEF_H_ 
は定義されていないので〈中身〉が有効になります。その中に」

#define _TYPEDEF_H_

「があるので、この時点で _TYPEDEF_H_ が定義されます」
『２度目に読み込まれた時には、 _TYPEDEF_H_ が定義されているから
〈中身〉が空白に置き換えられるから、再定義されない、ってわけね』
「そういうこと。ただ、これはひとつ問題があります」
『問題？』
「 Typedef.h ってファイルが複数あったら？」
『あ……両方とも _TYPEDEF_H_ になっちゃったらまずいね』
「 MFC の場合は特殊なコードを付けて回避しています。自分で作るときに
はライブラリ名とかを頭に付けるといいかも」
『それでもちょっと不安かも』
「そういう場合のために、もっとスマートな方法もあります」

// Typedef.h

#pragma once

struct DATA
{
    int m_i;
};

「 #pragma は特殊な機能を持つプリプロセッサで、 once を指定するとそ
のヘッダーファイルは１回しか読み込まれなくなります」
『でもさ、あまり使われてないよね』
「 #pragma そのものの知名度が低いからね。そうだね、今までのヘッダー
ファイルの仕組みを聞いて、どう思った？」
『なんかすんごくめんどい。インクルードの順番とか循環参照とか、そうい
うの気にしなきゃいけないのが』
「でしょう。実は、他のプログラミング言語では、そういうの気にしなくて
いいんです」
『へ？』
「ヘッダーファイルは〈置き換え〉じゃなくなってるし、インクルードも何
度でもしていいし、順番も関係なし。仕組みそのものがもっとスマートに
なっているんです」
『つまり、 C++ って古くてダメってこと？』
「だめじゃないけど、古いのは確か。だから、こういう手作業で面倒なこと
が必要になってくるし、新しいプログラミング言語に追い付こう、ってこと
で #pragma が追加されたりしたんです」
『あ、 #pragma ってあとから追加されたんだ』
「そう、比較的最近の機能なんです。だからあまり知られてないのかな。
ヘッダーファイルって、単に使う関数のをインクルードすればいい、って
イメージだったかもしれないけど」
『全然違う』
「それを踏まえて使わないと大変、ということで」

/*
    Preview Next Story!
*/
「以上が、ソースファイルやヘッダーファイルまわりの基礎」
『基礎ってことは、これから応用？』
「そう、たとえば DLL とか」
『 DLL ！！　あの DLL 、 System32 フォルダにコピーしたりする』
「そう、その DLL 」
『その DLL を……？』
「というわけで次回」
＜ Version 15.07 スタティックリンクライブラリと DLL ＞
『につづく！』
「もちろん火美ちゃんが作ったり使ったり」
『いや無理それ！　難しすぎ！！』
「まぁ実際の所」
『簡単？』
「やっぱり難しいけど」


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

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


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

    (C)KAB-studio 1999 - 2005 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz
*/
////////////////////////////////////////////////////////////////////

