C ++ヘッダーがどこからインクルードされたかをプログラムで検出(および印刷)することは可能ですか?
私は次のようなヘッダーを持っています:
// DeprecatedHeader.h
__pragma( message ("DeprecatedHeader.h is deprecated - include NewHeader.h instead.") )
#include "NewHeader.h"
ご覧のとおり、コンパイラはMSVCですが、ラップするマクロがあります。GCCは大歓迎ですが、不可能な場合は、Windowsだけで「トリック」を有効にします。
しかし、私が探しているのは、次のような出力です。
"AnyOtherFile.cpp was including DeprecatedHeader.h, please include NewHeader.h instead."
編集:私がこれを望む理由を明確にするために:コンパイラがスローする警告はすでに大いに役立っています:コードは壊れていませんが、インクルードを変更するように人々を促します。問題:別のヘッダーを介してこのヘッダーをプルできるため、間違った「男」のせいになる可能性があります。私の目的は、コンパイルユニットではなく、誤ったヘッダーのせいにすることでした。