c++ - 在 DLL ( 用于 Windows ) 中,对全局变量使用的C++ 限制

  显示原文与译文双语对照的内容

首先,我知道全局变量是恶意的:) 尽管有合理的例子,为什么我需要使用一个。

我知道在 DllMain ( 没有 LoadLibraries,没有初始化等等) 中可以执行什么非常严格的限制。

而且我知道全局变量在前面的DllMain DLL_PROCESS_ATTACH中被初始化。

全局变量初始化时是否具有相同的限制?

但是,我发现 Microsoft: http://msdn.microsoft.com/en-us/library/988ye33t,它没有任何与限制相关的细节。

我又看到了另一个Stackoverflow问题: 在DLL中声明的全局变量发生了什么? 这里是 snippet snippet在DllMain中禁止执行的操作。 在构造函数中,这些东西可能是 ,也可能是 。"

但是,commentor似乎不确定这种限制是否确实存在。

我想知道关于这个主题的任何信息。

时间: 原作者:

就像中解释的,这是我的,真正的dll入口点( 例如 。 是由 DllMain 接受的,在 DLL_PROCESS_ATTACH 上初始化它的内容,调用全局的构造函数,然后调用"伪" DllMain ( 例如 ) 。 你作为程序员看到的是 DllMain ) 。

MSDN文档调用 DllMain 真正的dll entrypoint,因此所有限制都适用于全局对象的构造函数,因为它们被调用。

这是避免全局变量的另一个原因: 在 DllMain 中调用代码,但这不明显,因这里在 DllMain 中进行"禁止"事件时,可以能需要花费很多时间。

原作者:
...