gpt4 book ai didi

c++ - C/C++ 中有什么方法可以检测代码是否在静态初始化期间运行?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:20:10 24 4
gpt4 key购买 nike

我正在编写一个可作为 DLL 使用的跟踪库。它基本上被我系统中的每个组件使用。一个棘手的要求是跟踪函数需要在进程生命周期的早期调用,甚至在 main() 运行之前。

该库的使用者包括可执行文件、静态链接的 DLL、延迟加载的 DLL 和动态加载的 DLL。所有的变化。

一些跟踪功能不能很好地与静态初始化一起使用,但其他的很好。理想情况下,我希望能够在初始化期间为消费者提供最少的安全功能,然后在初始化完成后提供完整的功能。

要求消费者自己进行明确的“我完成了初始化”调用是行不通的,因为某些消费者本身就是 DLL,并且无法控制托管它们的可执行文件。同样的问题只是向上移动了一个层次。

我希望有一些方法可以让我询问运行时我当前是否正在静态初始化中运行,或者该阶段是否已完成。这样的事情可能吗?

更复杂的是,我需要在 5 个平台上运行。我不需要一次编写的解决方案,但我确实需要让它以某种方式在所有平台上运行。

最佳答案

全局变量?像这样的东西:

bool initTime = true;

在你的 DLL 中然后

int main()
{
initTime = false;
// your main code comes here
}

在您的可执行文件中。

关于c++ - C/C++ 中有什么方法可以检测代码是否在静态初始化期间运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3292204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com