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

C# 可以在Visual Studio C中编译的文件大小是否有限制?,c#,c,visual-studio-2010,auto-generate,filesize,C#,C,Visual Studio 2010,Auto Generate,Filesize,我正在开发一个C#程序,该程序生成一段非常大的C代码。它生成一个.c文件和相应的头文件。在一个非常基本的级别上,程序接受用户的字符串,然后将其与autogen期间放置在头文件中的数千个其他字符串进行比较 头文件包含超过800k行代码,.c文件包含大约300k行代码。可以想象,这些文件非常大。现在,我意识到拥有这么大的文件是一种糟糕的编码实践。最好的办法是将这个文件分解成更小的文件,并以这种方式编译它,但是我们是否可以假设这两个文件结构对于我的项目如何在总体方案中使用是必要的 考虑到这一点,我在V

我正在开发一个C#程序,该程序生成一段非常大的C代码。它生成一个.c文件和相应的头文件。在一个非常基本的级别上,程序接受用户的字符串,然后将其与autogen期间放置在头文件中的数千个其他字符串进行比较

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

考虑到这一点,我在VisualStudioIDE和命令行中编译这个程序时遇到了困难。事实上,这并不完全正确。每次我尝试使用这两种方法时,它似乎都可以编译(无可否认,这需要一段时间)。然而,当我开始运行这个程序时,问题就出现了。它很好地到达了输入循环,但在接受用户输入后,程序崩溃,出现以下错误:

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

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

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

我意识到这是一种不正常的生成和运行代码的方式,但我将非常感谢任何建议

我意识到拥有如此大的文件是一种糟糕的编码实践

不,不是

有一个逻辑文件是手动维护的,这是不好的做法

有一个休常数文件是有争议的

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

为生成的代码提供很少的文件是有好处的,例如易于生成。VS.ENT不支持iteself-EntityFramework等从一个输入模型生成一个包含大量类的cs文件

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

没有任何记录。你可能会遇到一个很少有人见过的虫子。我担心您将面临重写或PSS支持案例(Microsoft支持服务),如果您发现编译器错误,该案例可能是免费的

或者,它可能是您的代码—如果您的调试案例小得多,则可能是您的代码对完整数据集产生错误,这比编译器问题更可能


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

“我建议您使用完整文件而不是一个小文件集进行调试”-如果这没有帮助,我会尝试的另一件事是动态分配相同的数据结构,方法是读取包含autogen中相同字符串的纯文本文件。然后在动态分配的结构上运行代码。如果它在doom的头文件上工作,但在doom的头文件上不工作,则表明编译器不能处理如此大的数据,而不是您的代码。谢谢您的建议。我将实施这些建议并向你汇报。在测试了你的建议后,我发现我找错了方向。我没有为我的一个结构分配足够的内存,程序填充得太快了。我现在已经解决了这个问题。谢谢你的帮助说错话。规则一——编译器是正确的。规则二——规则一有时可能是错误的。20年的编程生涯中,我曾经见过一次(很有趣,重命名(!)一个变量修复了这个问题)。通常,可以安全地假定这不是编译器问题;)