gpt4 book ai didi

不创建 C++ 全局类变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:48:56 28 4
gpt4 key购买 nike

我正在查看一段创建全局类变量的代码。这些类的构造函数调用符号表单例并在其中添加 this 指针。

在 Keywords.cpp 文件中

class A : class KeyWord
{
A() { add(); }
} A def;

同样适用于关键字 B、C 等

void KeyWord::add()
{
CSymbolCtrl& c = CSymbolCtrl::GetInstance();
c.addToTable(this);
}

这些翻译单元被编译成一个库。当我“转储”库时,我看到了 ADef、BDef 等的动态初始值设定项。

在 exe 中没有,当我调用 CSymbolCtrl 实例时,我没有找到存储在其映射中的 ADef、BDef..。当我在 add() 中设置断点时,它没有被击中。有没有一种方法可以让链接器忽略 ADef、BDef,因为它们在任何地方都没有被引用?

最佳答案

来自标准文档 1.9 程序执行

4) This provision is sometimes called the “as-if” rule, because an implementation is free to disregard any requirement of this International Standard as long as the result is as if the requirement had been obeyed, as far as can be determined from the observable behavior of the program. For instance, an actual implementation need not evaluate part of an expression if it can deduce that its value is not used and that no side effects affecting the observable behavior of the program are produced.

所以,它可能,是的。

关于不创建 C++ 全局类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4213301/

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