ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月28日(日) 05:43

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 
作成者 メッセージ
 記事の件名: #ifdef DEBUG のつづき
投稿記事Posted: 2005年11月18日(金) 22:56 
プログラミング掲示板に書いた #ifdef DEBUG の件ですが、
マティさんと山本さんの返信と自分の投稿を読返してみて、もしかすると、伝わっていないのかもしれないと思い、
こちらに再投稿します。
引用:
リリースコンパイルでも無視されていない
のは、#define DEBUG ではなくて、 debug.sbp です。つまり、
_DebugSys_GetThread() や _DebugSys_EndProc() もリリース版でコンパイル
されてしまっている。ということなのです。

書込みの途中で、debug.sbp がリリースコンパイルで正常に無視されれば、その中の #define DEBUGも無視されて、
#ifdef DEBUG が実現されると思ったもので、わかりにくい投稿になっていしまいました。

山本さん、お忙しいと思いますが修正よろしくお願いします。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年11月18日(金) 23:27 
オフライン
Site Admin

登録日時: 2005年5月30日(月) 15:08
記事: 535
リリースコンパイルでもdebug.sbpがインクルードされている、ということですが、その通りです。ただし、debug.sbp内で定義されているデバッグ用の関数郡はリリースコンパイルでは呼ばれないため、_DebugSys_GetThread() や _DebugSys_EndProc() などの関数がリリースコンパイル後の実行ファイルから呼ばれることはありません。

ちなみに、ABは一度も呼ばれない関数はコンパイルの対象にならないというちょっとした特徴を持ち合わせています(エラーチェックが行われなくなるなどの弊害があるため、将来的に修正を行う予定ですが…)。

よって、リリースコンパイルを行った場合、実行ファイルの内部に_DebugSys_GetThread() や _DebugSys_EndProc() の内容が書き込まれることはありませんし、呼び出されることもありません。

それと#ifdef _DEBUGについてですが、実はこちら、Ver4.11.02で対応しています。次回のバージョンアップで、ヘルプリファレンスの書き換え、ライブラリの改正などを行う予定です。

識別名は "DEBUG" ではなく、"_DEBUG" です。システム上の識別名ということで、アンダーバーを付けておきましたので、ご注意ください。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2005年11月26日(土) 14:49 
山本さん、対応ありがとうございました。知識不足でバグ報告へ投稿し失礼致しました。

_DEBUG は、早速使わせて頂いてます。快調です。
また、一度も呼ばれない関数はコンパイルされないという仕様は、できれば残しておいて
ほしいと思います。今まで汎用関数をプログラムに応じて編集して #include していましたが、
これなら1ファイルにまとめておくだけで使えそうなので便利だと思います。

ver5 の開発、がんばって下さい。


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[14人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean