可以在Visual Studio C中编译的文件大小是否有限制?

时间:2012-07-06 10:32:57

标签: c# c visual-studio-2010 auto-generate filesize

我正在研究一个生成大量C代码的C#程序。它会生成.c文件和附带的头文件。在最基本的层面上,程序接受来自用户的字符串,然后将其与自动生成期间放置在头文件中的数千个其他字符串进行比较。

头文件包含超过800k行代码,.c文件包含大约300k。可以想象,这些都是非常大的文件。现在,我意识到拥有如此庞大的文件是错误的编码实践。最好的办法是将这个文件分解成较小的文件并以这种方式编译,但是我们可以假设这两个文件结构对于我的项目在宏观方案中的使用方式是必要的。

考虑到这一点,我在使用Visual Studio IDE和命令行编译此程序时遇到了问题。事实上,这并非完全正确。每当我尝试使用任何一种方法时它似乎都可以编译好(不可否认它需要一段时间)。但是,当我来运行该程序时,问题就会出现。它很好地到达输入循环,但在接受用户输入后,程序崩溃并出现以下错误:

" Prototype.exe中0x008105f9处的未处理异常:0xC0000005:访问冲突写入位置0x00000000。"

我很确定这不是导致问题的代码。我已经运行了在调试模式下生成的这个代码的版本,这个版本要小得多并且运行正常。唯一的区别是C#程序写入头文件的字符串数量。较小文件的大小分别为14k和5k行。此外,IDE在编译和运行完整大小的代码后不允许我使用断点进行调试,而我的较小代码则允许。

我的问题是:C语言或Visual Studio编译器是否存在导致上述错误的单个大文件的限制或问题?如果是这样,有没有办法在保留我的双文件结构的同时绕过这个限制?我已尝试在属性dialouge中将堆和堆栈大小增加到4mb,但这没有帮助。

我意识到这是生成和运行代码的一种异常方式,但我会感激任何建议。

1 个答案:

答案 0 :(得分:3)

  

我意识到拥有如此庞大的文件是一种糟糕的编码习惯

不,不是。

拥有一个像MANICALL一样维护的LOGIC文件是不好的做法。

拥有一个常量的hugh文件是ARGUABLE,

但是生成这样的文件并没有出现在编码实践中,因为你没有对它进行编码。你生成它。

生成代码的文件很少,例如易于生成,这样做有好处。 VS.ENT做了那个迭代 - EntityFramework等生成一个包含大量类的ONE cs文件,所有这些都来自一个输入模型。

  

C语言或Visual Studio编译器对单arge有任何限制或问题   导致上述错误的文件?

没有记录。你可能遇到了很少有人见过的错误。我担心你是在重写OR - PSS支持案例(微软支持服务),如果你发现编译器错误,它可能是免费的。

或者它可能是你的代码 - 如果你的调试案例要小得多,那么你的代码可能会产生一个完整数据集的错误,这比编译器问题更有可能。

我建议您使用FULL文件进行调试运行,而不是一小组。调试器可能会指向一个令人惊讶的位置。