加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C/C++中是否有任何方法可以检测静态初始化期间代码是否正在运

发布时间:2020-12-16 06:54:26 所属栏目:百科 来源:网络整理
导读:我正在编写一个可用作DLL的跟踪库.它基本上被我系统中的每个组件使用.一个棘手的要求是,即使在main()运行之前,也需要在进程生命周期的早期调用跟踪函数. 该库的消费者包括可执行文件,静态链接的DLL,延迟加载的DLL和动态加载的DLL.所有的变化. 一些跟踪功能对
我正在编写一个可用作DLL的跟踪库.它基本上被我系统中的每个组件使用.一个棘手的要求是,即使在main()运行之前,也需要在进程生命周期的早期调用跟踪函数.

该库的消费者包括可执行文件,静态链接的DLL,延迟加载的DLL和动态加载的DLL.所有的变化.

一些跟踪功能对静态初始化不起作用,但其他功能很好.理想情况下,我希望能够在初始化时为消费者提供最低限度的安全功能,然后在初始化完成后提供完整功能.

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

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

更复杂的是,我需要在5个平台上运行.我不需要一次性写入解决方案,但我确实需要在所有平台上以某种方式使其工作.

解决方法

全局变量?就像是:

bool initTime = true;

在你的DLL然后

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

在你的可执行文件

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读