问题标签 [static-initialization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
174 浏览

java - static() 方法(没有任何声明)

我有以下课程:

何时调用此静态方法以及如何调用?

创建这样一个静态方法(没有名称/返回类型)的目的是什么?

0 投票
2 回答
358 浏览

c++ - 在给定的翻译单元中,文件级静态变量的顺序是否始终相同?

我有一个程序分成两个源文件:

例子.cpp

示例__ main.cpp

该程序的输出是否保证为:

在所有平台和编译器上?如果是这样,它在标准中的什么地方这么说?如果我使用命名空间firstsecond出现在不同的命名空间中,这有关系吗?如果它们不是静态的并且我使用的是匿名命名空间呢?

0 投票
2 回答
358 浏览

c++ - 在 C++ 中初始化类的静态数组成员的更好方法(虽然 const 是首选)

作为类的成员,我有一个指向函数的静态指针数组。

我需要初始化它,但事实证明这个数组有 64K 长,所以用静态初始化器初始化它是不切实际的,{ x, y, z, ... }因为它会使代码混乱。

我不得不用代码初始化它,有几个循环。

我想这样做的方法是static在构造函数中初始化数组并为其设置一个标志,所以只有类的第一个实例的构造会触发这个初始化。

从实例内部访问这个静态标志也不是线程安全的,但这是另一回事。

有没有更清洁或更好的方法来做到这一点?

我也希望这个数组是const,但恐怕唯一的方法是static {}初始化,对吧?

0 投票
1 回答
73 浏览

c++ - 在库中查找所有动态初始化

我有几个大型代码库可以编译成动态库。我知道其中一些有一些非常昂贵的动态全局动态初始化器。(也就是说,构建起来非常昂贵的类/结构的全局实例。)

我想要一种方法来查看这些动态初始化程序在代码中的内容/位置的列表,以便我可以查看它们是否昂贵并且需要重构。我想避免挖掘大量程序集,因为其中一些库非常大并且可能包含数百个动态初始化程序(其中许多很小且相当便宜,如字符串构造)。

有没有可以帮助我解决这个问题的工具?(我的工具链是 Redhat Linux/gcc/cmake。)

0 投票
2 回答
14868 浏览

c++ - C++ 静态初始化 vs __attribute__((constructor))

例子:

它是确定性的foo还是bar先打印出来的?

(我希望并且期望静态对象的构造函数总是首先执行但不确定,并且关于构造函数属性的 GCC 文档没有说明任何内容。)

0 投票
1 回答
127 浏览

module - D中单独模块中类的静态初始化和使用

在我的程序中,我有一个要在进入 main() 之前分配的类。我想把这些放在一个单独的模块中,以防止我的代码杂乱无章;但是,一旦模块超出范围(在进入 main() 之前),对象就会被释放,让我尝试在 main.xml 中使用空引用。一个简短的例子:

我仍然习惯于将模块作为封装的基本单元的概念,而不是 C++ 和 Java 中的类。这可以在 D 中完成,还是必须将我的初始化移动到主模块?

0 投票
2 回答
296 浏览

c++ - 是什么构成了块范围静态或线程存储持续时间变量的初始化失败?

在回答了这个问题并且在标准论文中没有找到令人满意的答案后,我开始怀疑。该标准规定了上述变量的以下初始化:

§6.7 [stmt.dcl] p4

[...] 否则,此类变量在控制第一次通过其声明时被初始化;这样的变量在其初始化完成时被认为已初始化。如果初始化抛出异常退出,说明初始化未完成,下次控件进入声明时会再次尝试。

没有提到什么可能导致初始化被重试,如果初始化失败除了抛出异常(longjmp(),tad exit,信号等等)。

我是否忽略了标准中的任何内容?我一遍又一遍地查看初始化、声明和异常子句,甚至通过快速搜索“静态”来查阅CWG 缺陷目录,但找不到任何相关内容。

这是标准中的规格不足(并且是这样的缺陷)吗?

0 投票
1 回答
1254 浏览

android - android 内容提供程序中的 urimatcher

我是安卓新手。我浏览了Android的代码,ContentProvider我有点困惑,因为静态UriMatcher中的语句将首先执行。这里的代码里面有一个静态块,但不知道. 它如何使用它,因为在初始化之前静态块应该运行。UriMatcherPROVIDER_NAMEPROVIDER_NAME

任何帮助都会被极大地接受......在此先感谢

0 投票
6 回答
767 浏览

java - Java - 静态初始化

我写了一段代码:

输出是:

get z
子构造函数
子构造函数
get y
得到 x
z 的值为 0
子构造函数
main 中 z 的值为 0

谁能解释一下为什么 z 的值为 0 而不是 10 ?

编辑:-谢谢大家,我得到了第一个问题的答案。我仍然有疑问,据我所知,静态块是在加载类之后和实例化类的第一个对象之前执行的。那么 SOP("The value of z is "+z) 应该在 SOP("Child constructor") 之前执行!不是吗?

0 投票
1 回答
648 浏览

arrays - Pascal - 在数组中硬编码数据 - 快捷方式

这是我正在尝试做的事情:

是否有实现此目的的捷径,我可以在一行中分配值?