我有一个可以在构造函数中抛出异常的类。我不知道拥有此类的代码,因此我无法更改此行为或向此类添加其他实例化或初始化方法。我需要在 main 中创建这个类的一个对象。这是否意味着我需要一个主要由一个巨大的 try / catch 块组成的 main() ,如下所示:
main()
{
try
{
A a;
...
}
catch(std::exception& e)
{
std::cout << e.what() << std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
如果这个 main 有数千行长怎么办?这个 try / catch 块很大。我觉得应该有更好的方法来做到这一点,但我想不出一个。
我目前的任务是将我的商店从Clearcase搬到Git的精彩世界.在这样做的过程中,我发现了我的商店在版本控制中保留的各种各样的垃圾垃圾,这种垃圾已经膨胀了存储库的大小.
我发现的主要罪魁祸首是我们在我们的Clearcase存储库中保留了路由器iOS配置映像.这些是巨大的二进制映像,数百兆字节.
我已经对Git做了一些阅读,并且建议我们应该保留在Git仓库中的唯一内容是源文件.不应在版本控制中保留大型二进制文件.
所以,我的问题是:处理路由器配置映像(或类似的东西)等文件的"标准"方法是什么?这些是我们的商店自己不维护的大型二进制文件,我们不能自己重新生成这些图像,但我们需要它们用于我们生产系统的已部署基线.
使用 GNU Make 3.81。这个 Makefile 有一些重复的规则,我觉得可以简化,但我不知道如何去做。
如果目录不存在,Makefile 需要解压 tarball。然后,它应该将 tarball 中的源文件版本复制到 tarball 中,然后对其运行配置和 make 以生成目标二进制文件。
BLARG = blarg-1.8.6
blarg: $(BLARG)/get_key.c $(BLARG)/grab_key.c $(BLARG)/keys.c $(BLARG)/options.c $(BLARG)/blarg.c
cd $(BLARG) && ./configure --disable-guile && $(MAKE) && cp blarg ../
$(BLARG):
cp /pub/tars/$(BLARG).tar.gz .
tar -xvf $(BLARG).tar.gz
rm $(BLARG).tar.gz
$(BLARG)/get_key.c: get_key.c | $(BLARG)
cp $< $@
$(BLARG)/grab_key.c: grab_key.c | $(BLARG)
cp $< $@
$(BLARG)/keys.c: keys.c | $(BLARG)
cp $< $@
$(BLARG)/options.c: options.c | $(BLARG)
cp $< $@
$(BLARG)/blarg.c: blarg.c | $(BLARG)
cp $< $@
$(BLARG)/options.h: …
Run Code Online (Sandbox Code Playgroud)