Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
假设我们有这里描述的工厂。假设我们在一个项目中拥有所有示例代码。正如作者所说,DerivedExample'的静态registrar构造函数应该在main之前执行。然而,该变量对于该类是私有的,并且在main程序中的任何地方都不能访问,而且该类也从不直接在main正文中使用。所以我想知道在以最大优化编译/链接时是否可以将它从最终可执行文件中排除?
DerivedExample
registrar
main
如果它被遗漏,那么将该工厂及其所有元素编译到共享库中是否可以保证工厂元素不会被遗漏?
编译器之间的行为不同。几年前,我在一些在不同平台上编译的代码中实现了工厂等。它在我第一次编写它的平台上运行良好,但在下一个平台上完全失败了。
如果我没记错的话,是 GCC 起作用了,而 msvc 消除了整个班级。
所以 m 不相信编译器和链接器的行为相同。你必须测试每一个才能知道。