Clang 警告(使用 -Weverything
或 Wglobal-constructors
时)关于静态对象的构造函数。
warning: declaration requires a global constructor
[-Wglobal-constructors]
A A::my_A; // triggers said warning
^~~~
为什么这是相关的,应该如何处理这个警告?
简单示例代码:
class A {
// ...
static A my_A;
A();
};
A A::my_A; // triggers said warning
原文由 Walter 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个触发相同警告的更简单的情况:
这是完全合法且安全的 C++。
但是,对于您拥有的每个重要的全局构造函数,应用程序的启动时间都会受到影响。该警告只是让您了解此潜在性能问题的一种方式。
您可以使用 -Wno-global-constructors 禁用警告。或者您可以更改为这样的惰性初始化方案:
这完全避免了这个问题(并抑制了警告)。