C++ Builder > IDE > [ファイル]-[使用するユニット]でincludeする位置をコントロールする > #ifdef使用
C++ Builder XE4
IDEの標準機能として、メニューの[ファイル]-[使用するユニット]を使うことで、ソースもしくはヘッダファイルに#include "Unit2.h"などを追加できる。
通常の追加
#include "Unit1.h"
#include "Unit2.h"
[ファイル]-[使用するユニット]にてUnit3.hを追加すると以下となる。
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
追加場所のコントロール
こちらは、IDEを使っている中で偶然見つけた機能。
#include "Unit1.h"
#define DEBUG_XXX
#ifdef DEBUG_XXX
#include "Unit2.h"
#endif
[ファイル]-[使用するユニット]にてUnit3.hを追加すると以下となる。
#include "Unit1.h"
#include "Unit3.h"
#define DEBUG_XXX
#ifdef DEBUG_XXX
#include "Unit2.h"
#endif
どうも#ifdefで囲われたincludeは最後尾とみなさないようだ。
使いどころ
Productionとしての#includeと一時的な#includeを並べた時に、[ファイル]-[使用するユニット]ではProductionコード側にincludeするようにする、などに使えるかもしれない。
// Production code
#include "ScreenUtil.h"
#include "UdpUtil.h"
#include "Unit1.h"
// <<--- ここに追加される
#define DEBUG_XXX
#ifdef DEBUG_XXX
#include "DebugScreen.h"
#include "DebugUdpComm.h"
#endif
開発を進める中で、デバッグ用includeが並んだ後にProduction用includeが間に並んでしまい、出荷前に整理する、というのを何回が実施してきた経緯がある。
#ifdef
の記載の意図が分かりやすいかどうかの問題はある。
気づいた事項 (2016/12/04)
- 誤:
#ifdef
で囲った部分は無視される - 正:
#ifdef
の行以降は無視される
何が違うかというと、後者の場合、#ifdef ...#endif
の後にincludeしたものがあったとしても、「その下に追加されず、#ifdefの前に追加される」ことになる。
Author And Source
この問題について(C++ Builder > IDE > [ファイル]-[使用するユニット]でincludeする位置をコントロールする > #ifdef使用), 我々は、より多くの情報をここで見つけました https://qiita.com/7of9/items/dbfe25f639341a339f07著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .