对于调试和日志库,我希望能够在运行时找到项目已编译和链接的所有源文件的列表。我假设我将在每个源文件中包含某种标题,并且预处理器 __FILE__ 宏可以为我提供该文件的字符常量,因此我只需要以某种方式“广播”来自每个文件的信息以由 a运行时函数。
问题是如何优雅地做到这一点,特别是如果它可以从 C 而不是 C++ 中完成。在 C++ 中,我可能会尝试使用静态存储创建一个类来保存文件名列表。每个头文件都将创建该类的文件本地静态实例,该实例在创建时会将 FILE 指针或其他任何内容附加到类的静态数据成员中,可能作为链表。
但我认为这在 C 中不起作用,即使在 C++ 中,我也不确定是否可以保证每个元素都会被创建。