令人费解的编译错误:error C2144: syntax error : 'double' should be preceded by ';' 和 error C3646: ';' : unknown override specifier

今天编程莫名其妙的出现了以下两个编译错误:

1>e:\日常学习\plsa_nmf\plsa_nmf\sutil.h(10): error C3646: ';' : unknown override specifier
1>e:\日常学习\plsa_nmf\plsa_nmf\sutil.h(10): error C2144: syntax error : 'void' should be preceded by ';'

或者显示成

1>e:\日常学习\plsa_nmf\plsa_nmf\query.cpp(17): error C3646: ';' : unknown override specifier
1>e:\日常学习\plsa_nmf\plsa_nmf\query.cpp(17): error C2144: syntax error : 'double' should be preceded by ';'

 

它指示文件query.cpp的17行有问题,在至于后面的编译错误其实是第一个编译错误引起的。

在vs2010编译环境下,不仔细看,很难发现输出编译信息中的';'和';'的区别。

另外,就算看出来了,你在编译器指示的文件query.cpp中也找不到';',这个分号不知道是在哪里出现的,通过查看编译信息,我们

可知,这个错误是在编译query.cpp时出现的,其实,最简单的解决方法就是,对整个项目进行查询,看看那些地方出现了';',这样

可以很快解决问题。

当你没有遇到过或者不记得这种错误的时候,估计你会苦恼一会儿,其实类似这种错误,都是因为字符的格式不对引起的。以后编程要

多加注意。另外,不要太相信编译器,编译器上的提示仅仅可以作为参考,像这个问题上,编译器指示的文件就不是问题出现的那个文件,

其实问题出现的那个文件是在query.h中。

 

posted on 2011-11-30 15:21  COS  阅读(5031)  评论(0编辑  收藏  举报