【发布时间】:2026-01-11 23:25:06
【问题描述】:
我正在处理一个项目,其中我们有几个共享多个目标文件的可执行文件。我们希望将日志记录添加到所有可执行文件中,并有一个库来执行此操作。
但是,转到每个可执行文件的 main() 函数并添加相同的样板函数调用以启动日志记录似乎很笨拙。这意味着我们重新编写相同的东西,并放松可维护性和 DRY(“不要重复自己”)。如果我们能够系统地确保在调用 main 函数之前开始记录日志,那就太好了。
我突然想到 libc++ 中有一些函数可以调用 main,并且可以覆盖它们。但是,我不知道它们是什么,并且想象如果我们不小心,这可能会破坏事情。有谁知道如何做到这一点?或者,如果这太过分了,还有其他关于如何进行的建议吗?
如果有什么不同的话,我们将使用 C++11 和 g++ 4.8。
【问题讨论】:
-
为什么不在全局变量的构造函数/析构函数中“注入”你的启动和关闭代码呢?剩下的唯一问题是多次执行此操作;然后没有指定它们初始化的顺序,所以你不应该依赖任何。
-
在每个可执行文件中覆盖 main 函数如何比在每个可执行文件中添加一个函数调用到 main 更易于维护?
-
这不是重复的。他没有问“我如何让代码在 main 之前运行”?他问过如何解决问题,这可能是解决方案的一部分。