我们遇到了静态初始化命令惨败的一些问题,我正在寻找方法来梳理大量代码以找到可能发生的事件.有关如何有效地做到这一点的任何建议?
编辑:我得到了一些关于如何解决静态初始化顺序问题的好答案,但这不是我的问题.我想知道如何查找受此问题影响的对象.在这方面,Evan的答案似乎是迄今为止最好的答案; 我不认为我们可以使用valgrind,但我们可能有可以执行类似功能的内存分析工具.只有在给定构建的初始化顺序错误的情况下才能捕获问题,并且顺序可以随每个构建而改变.也许有一个静态分析工具可以捕捉到这一点.我们的平台是在AIX上运行的IBM XLC/C++编译器.
什么是"功能切换"和"功能分支"以及它们之间的区别是什么?
优缺点都有什么?为什么一个比另一个好?
我在Google上发现了一些关于此问题的文章,我倾向于参加"功能切换"阵营,但我不相信"功能切换"在所有情况下都是更好的选择.
version-control continuous-integration feature-branch featuretoggle
是否可能,以实现以下目标:
x.hpp - 许多其他类都包含此文件
class x_impl; //forward declare
class x {
public:
//methods...
private:
x_impl* impl_;
};
Run Code Online (Sandbox Code Playgroud)
x.cpp - 实现
#include <conrete_x>
typedef concrete_x x_impl; //obviously this doesn't work
//implementation of methods...
Run Code Online (Sandbox Code Playgroud)
所以基本上,我希望用户包含文件x.hpp,但不知道conrete_x.hpp标头.
由于我concrete_x只能通过指针使用并且它只显示为私有数据成员,因此前向声明应该足以让编译器知道准备多少空间.它看起来很像着名的"pimpl成语".
你能帮帮我吗?
PS.我不想使用它void*并将其投射..