是否有更简洁的方法来处理编译器错误C1076和C3859?

Vai*_*urt 7 c++ precompiled-headers

今天我一直在为我们的precomp.h文件添加一些库头文件.然后我尝试在调试中重新编译并得到这两个错误(从boost包括产生):

错误C3859:超出PCH的虚拟内存范围; 请使用'-Zm310'或更高版本的命令行选项重新编译

致命错误C1076:编译器限制:达到内部堆限制; 使用/ Zm指定更高的限制

所以我通过增加内存堆大小来修复它们.没问题.

我的问题更多的是关于这个问题是否会隐藏另一个问题?如果我继续向库中添加库标题,我最终还是要给它更多的内存precomp.h吗?这是程序员处理它的方式,还是会有一种"更清洁"的方式呢?

更多信息:

  • Visual Studio 2013
  • C++

den*_*der 4

/Zm 参数不会改变代码的解释方式,因此它不会隐藏代码中的问题,除了代码需要大量内存来编译这一事实之外。

该开关仅通知编译器在编译期间应计划的内存成本。在 VS 2013 中,默认的预编译头缓冲区大小为75 MB,这是一个复杂项目可以合理超过的值。在这种情况下,您可以使用 /Zm 来增加限制。或者,您可以投入大量工作来降低包含文件的复杂性

在大多数情况下,增加 /Zm 可以更好地利用开发人员的时间。