用于查找无与伦比的大括号/预处理程序指令的提示和工具

flo*_*din 14 c c++

这是我最可怕的C/C++编译器错误之一:

file.cpp(3124):致命错误C1004:找到意外的文件结尾

file.cpp包含近百个头文件,后者又包含其他头文件.它超过3000线.代码应该模块化和结构化,源文件更小.我们应该重构它.作为程序员,总会有一个改进事物的愿望清单.

但是现在,代码很乱,截止日期即将来临.在所有这些行中的某个地方 - 很可能在其中一个包含的头文件中,而不是在源文件本身中 - 显然有一个无与伦比的支撑,无法匹配的#ifdef或类似.问题是,缺少点什么时,编译器真的不能告诉我哪里它丢失了.它只知道当它到达文件的末尾时,它不是正确的解析器状态.

您能否提供一些工具或其他提示/方法来帮助我找出错误原因?

njp*_*dge 10

如果#includes都在源文件中的一个位置,您可以尝试在#includes之间放置一个迷路右括号.如果在编译时遇到"无法匹配的右括号"错误,您知道这一切都达到了平衡.这是一种缓慢的方法,但它可以帮助您查明问题.

  • 二元搜索是你的朋友.你可以用#endif做同样的事情,更不用说跨越源文件的其余部分了.当错误停止时,它当然没有修复;-) (4认同)

JRL*_*JRL 7

一种方法:如果你有Notepad ++,打开所有文件(打开100个文件没问题),搜索{和}(搜索 - >查找 - >在所有打开文档中查找),记下计数差异(应为1) .随机关闭10个文件并查看计数差异是否仍为1,如果是,则继续,否则问题出在其中一个文件中.重复.

  • 后来:在搜索文件中的每个左括号并目视确认其伙伴后,从底部找到了十行...... (2认同)