是否可以在C ++中获取对象的包含文件的名称?

时间:2017-06-26 15:10:22

标签: c++

我需要从类中实例化一个对象,让我们说 Cat ,并知道其包含文件的名称。

主程序看起来像这样:

    #include <iostream>
    #include <vector>
    #include "Cat.h"

    using namespace std;

    vector<string> getIncludes(Cat cat){
      ...
    }

    int main(int argc, char *argv[])
    {
      Cat cat;
      std::vector<string>list = getIncludes(cat);
    }

Cat 类头文件将如下所示:

    #include "utils.h"
    #include "animals.h"

    class Cat{
    public:
      Cat();
      ~Cat();
      void meow();
    private:
      int age;
    }

致电std::vector<string> list = getIncludes(cat)后,list应包含"utils.h""animals.h"

如果还有其他方法可以在主要功能中获取这些名称,我愿意接受建议。提前谢谢。

1 个答案:

答案 0 :(得分:5)

不,那是不可能的,这些信息在运行时不再存在。

预处理器只是在编译时在utils.h语句出现的位置替换animals.h#include的内容。

如果您需要这样的列表来检测重新编译代码的依赖项,那么大多数编译器都可以在翻译单元中生成包含的标题列表。

以下是有关如何执行此操作的更多信息: