笔者在对项目进行编译时遇到了“超出允许的 DO 嵌套层次或表达式”的错误,编译无法进行下去。
刚开始以为是哪里的代码真有do循环嵌套太多的问题,但全面检索全部代码均未发现异常。重新回想编译前后的经过,更觉得蹊跷,前一次编译明明是顺利完成的,最新这一次编译仅仅是作了很小的改动,需要再编译,为什么就因嵌套太多编译不下去了呢?经反复分析对照,认为各模块的代码方面没有多少变化,应排除自身代码问题。那会不会是什么地方引入了第三方代码,导致编译时自动包含进来了呢?想到这里,猛然想起项目中有个模块是用到了VFP封装的GDI+类,文件名是_GDIplus.vcx,我把该类文件从原位置(在C:\Program Files\Microsoft Visual FoxPro 9\Ffc文件夹下)复制到了项目文件夹下,以便一起发布,同时也避免损坏原始文件。查看项目管理器中的“类”页,果然看到_GDIplus.vcx被自动包含进来了。
于是试着从项目管理器中移去该文件(是移去,不是删除),再进行编译,果真不再出现“超出允许的 DO 嵌套层次或表达式”的错误,但却报出另一个错误:“_GDIplus.vcx不是一个目标文件”,编译还是进行不下去。经查看该文件的属性等相关信息,发现其修改时间是刚才进行编译时的时间,说明该文件已被改动或损坏。重新复制其原始文件到项目文件夹中,替换同名文件,终于可顺利进行编译。
经此一教训,后来在每次编译前我都先检查一次项目管理器中的“类”页有无包含了_GDIplus这个类,有的话先移去,再编译,这样就没问题了。