gpt4 book ai didi

c++ - 静态初始化器

转载 作者:行者123 更新时间:2023-11-28 03:35:22 26 4
gpt4 key购买 nike

我正在摆弄一种可能的方法来运行一些“这些东西需要在程序启动时初始化”代码块,同时将它们保持在各自模块的本地,并想出了这个:

static struct init {
init() {
// do stuff
}
} _;

当我将其放入模块 a.cc 时,它工作正常。当我把它也放在模块 b.cc 中时不太好——A 的版本被调用了两次而 B 的版本根本没有。我想好吧,编译器错误,它对同名的两个函数感到困惑,但令我惊讶的是,在进一步测试中,它在 Microsoft C++ 和 GCC 中的行为方式完全相同。两个编译器碰巧有相同的错误,还是我在语言语义方面遗漏了什么?

此外,是否有任何关于解决方法或其他方法的建议来实现相同的结果(除了导出相关函数并从 main 显式调用它们,这显然是回退)?

最佳答案

变量 是静态的,因此仅在它们各自的翻译单元中可见,但类型 不是。将您的结构放在匿名命名空间中如何?

关于c++ - 静态初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11060152/

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