是否可以以编程方式检测(并打印出)包含 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."
编辑:要清楚我为什么要这样做:编译器抛出的警告已经有很大帮助:代码没有损坏,但会促使人们更改包含。问题:它可能会责怪错误的“家伙”,因为您可以通过另一个标题拉入此标题。我的目标是责怪错误的标题,而不是编译单元。