我有一个本机 C++ 程序,它使用“事件队列”在不同线程上执行函数。我在堆上分配了一个“事件”类,并将它放在我的一个线程队列中执行。
这一切都很好,但是很难追溯这些“事件”的起源。我希望每个“事件”都存储一些与其来源有关的信息。现在我使用内在_ReturnAddress()
的,但我也想要文件名字符串和行号。我可以使用宏来安排我的“事件”。
当然,我不想为拥有这些字符串付出代价。
有没有办法让预处理器建立并转储以归档“id”=>“file,line”的映射,其中“id”每次我的宏扩展时都会增加一些唯一的数字?我可以将该 ID 存储为我的来源。
或者也许计算一个非常短的文件名哈希,以便我可以在运行时使用它?
欢迎任何想法。