有没有办法打印包含当前文件的文件的文件名?

时间:2017-06-13 20:47:06

标签: c++ include compile-time

对于令人困惑的标题感到抱歉,但我不确定如何更简洁地说出来。

让我通过一个例子将其分解,以使其更清晰。

  1. 我们有2个文件,Foo.h和Bar.h
  2. 在Foo.h内部,我们有#include <Bar.h>
  3. 在Bar.h内部,我希望能够得到类似下面的代码:

    #pragma message ("Included from " __INCLUDER_FILENAME__)

  4. 在编译时,日志中会出现“包含在Foo.h中”的消息。

  5. 有谁知道这是否可能,如果可行,该如何做?

2 个答案:

答案 0 :(得分:3)

没有标准的方法可以做到这一点。编译器(或更确切地说是预处理器)扩展可能存在,但这将是特定于工具链的。

答案 1 :(得分:0)

GCC

有一个__BASE_FILE__定义

Visual Studio:

转到项目配置 - &gt; C / C ++ /预处理器。 在预处理器定义中添加:

__BASE_FILE__="%(Filename)%(Extension)"