小编T L*_*tle的帖子

Giant Try Catch Block 在 Main

我有一个可以在构造函数中抛出异常的类。我不知道拥有此类的代码,因此我无法更改此行为或向此类添加其他实例化或初始化方法。我需要在 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 块很大。我觉得应该有更好的方法来做到这一点,但我想不出一个。

c++ program-entry-point exception-handling

3
推荐指数
1
解决办法
1988
查看次数

把什么放在Git中

我目前的任务是将我的商店从Clearcase搬到Git的精彩世界.在这样做的过程中,我发现了我的商店在版本控制中保留的各种各样的垃圾垃圾,这种垃圾已经膨胀了存储库的大小.

我发现的主要罪魁祸首是我们在我们的Clearcase存储库中保留了路由器iOS配置映像.这些是巨大的二进制映像,数百兆字节.

我已经对Git做了一些阅读,并且建议我们应该保留在Git仓库中的唯一内容是源文件.不应在版本控制中保留大型二进制文件.

所以,我的问题是:处理路由器配置映像(或类似的东西)等文件的"标准"方法是什么?这些是我们的商店自己不维护的大型二进制文件,我们不能自己重新生成这些图像,但我们需要它们用于我们生产系统的已部署基线.

git

2
推荐指数
1
解决办法
93
查看次数

如何简化 Makefile 中的重复规则 (GNU Make)

使用 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)

makefile gnu-make

2
推荐指数
1
解决办法
342
查看次数