残っている分岐はすべて現状でフィックス

過去の修正をすべてフィックスして完全にさらの状態から再出発するための工程を進めているところだ.肝要な部分に関してはすでにほぼ完了しているが,#ifdef, #ifndefによる条件コンパイルの分岐はまだ1000箇所以上ある.できるところまでは整理しておきたいが,基本的に現在残っている分岐はすべて「現状でフィックス」という方針なので作業的には難しいものではない.分岐には#defineでキーワードを定義したものと,それを欠いているものがある.#defineがないものはその場でフィックスしてよいが,#defineがあるものについては検証が必要だ.

分岐を残す場合にはその目的・用途によって以下の4種に区分することにする.①TEMPORARY,②INCOMPLETE,③PENDING,④VERIFICATION.TEMPORARYはデバッグ時のダンプなど必要に応じて一時的に用いるもの,INCOMPLETEは修正が確定していないもの,PENDINGは再検討を要するもの,VERIFICATIONは動作確認のために(常時/一時的に)設置するものとする.

キーワードに関わる分岐が複数ファイルに関係する場合にはヘッダファイルを使った広域に適用される定義が必要だが,1ファイル内に留まる場合にはソースファイルの冒頭に直接記述する略式を認める.キーワードには原則日本語でその趣旨を明示するようにする.フィックスしたキーワードは原則としてコメントとしてファイルに残すこと,修正箇所は少なくとも@日付でマーキングして修正履歴をトレースための手がかりを残しておくこととする.つまり,@日付はタイムスタンプであると同時に識別子でもある.キーワードにはコメントで解説を付することが望ましい.日付だけのキーワードは望ましくない.また,日付が変わっても一連の修正には同一キーワードを適用する方がよい.

分岐を残す場合にはすべて#if definedないし#if !definedの形式に改める.ただし,一時的な仮修正では#ifdef 形式で負論理の条件式を用いることを認める.(逆に言えば,#ifdef形式の修正はすべて「仮修正」と認定される)暫定的な修正では#define文を切った上で,PENDINGとすべきである.PAIRLISTでdatacountの残留が発生するという事象があるので,先に見ておくことにしよう.

PAIRLIST::~PAIRLISTでdatacountの残留が発生している.アプリを起動→終了で再現できる.⇒これはノーマルな動作である.delete PAIRLIST→~PAIRLIST→dispose→cancelで始めてdatacountはゼロになる.check文の中で検査すればよいのだが,呼び出し頻度の高い関数は余分なものをできるだけ持たないようにしているので,速度最優先オフのときはcheckブロックが使えるようにしておこう.

同上サンプルで終了時,世代に_INT_MAX(FARFUTURE)が入っているPAIRLISTがある.~PAIRLISTのscount=76と77,SNUMは307と308だ.PAIRLISTのダンプで表示される世代番号は親の世代枠から取っている.世代枠が空であるためだ.⇒系列枠は世代シフト管理用ノード対リストというのを2種類持っている.シフトノード対リストと禁止ノード対リストだ.これらは管理用のノード対リストであり,直接系列枠に接続して,世代枠には繋がっていない.⇒系列枠に接続しているPAIRLISTの場合はそれを明示的にダンプするようにした.PAIRBOX::dumpのASSERTIONには誤りがあった.

また失敗した.

1>d:\zelkova\zelkovadll\src\mergecard.cpp(878): fatal error C1020: 予期しない #endif です。

多分これは孤立した#endifを削除するだけで通るだろう.⇒うまくいったようだ.RECYCLENEWNUMBER(リサイクル時には新しい通番を付与する)は現状でフィックスすることにする.すべての系列枠を親参照パスから切断する@20180503も確定しておこう.この他,確定した主なオプションはあとでリストにして示すことにする.これらの修正履歴は原則nodule.hに記載することにする.

#ifndefは完全に片付いた.以下は除外した.①マイクロソフトのコード,②ヘッダファイル冒頭のヘッダ名の宣言,③_DEBUGなどデバッグモードを示すキーワード.#ifndefにはこれらによって73件が残っている.#ifdefの現在数は846だ.ともかく,片付くまでやるしかない.一度バックアップを取っておこう.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA