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

Cam*_*ilo 2 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);
    }
Run Code Online (Sandbox Code Playgroud)

Cat类头文件将是这样的:

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

    class Cat{
    public:
      Cat();
      ~Cat();
      void meow();
    private:
      int age;
    }
Run Code Online (Sandbox Code Playgroud)

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

如果还有另一种方法可以在主函数中获取这些名称,我愿意接受建议.先感谢您.

πάν*_*ῥεῖ 5

不,这是不可能的,信息将不再存在于运行时.

预处理只是替换的内容utils.h,并animals.h在在在的地方编译时#include语句出现.


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

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

  • @Camilo您应该解释一下您的实际用例需要您在问题中执行此操作.听起来像第一条评论中所述的XY问题. (2认同)