一针见血:error C2146: 语法错误 : 缺少“;”

  • Post author:
  • Post category:其他


最近用VC7做一个小软件,主要的功能是定时扫描GPRS接收过来的数据,并存放在数据库里。要求把软件注册成为windows服务。在所有的工作做完以后,我着手实现这部分功能。其实完全不用在程序中写入任何代码,只需要执行一个批处理文件,便可完美地打成服务了。但我还是想试一下用程序怎么实现这个功能。

在VC知识库里,找到一篇文章,其实原理并不难,无非是把程序的切入口,由main函数转换到服务控制台上去。文章的名字叫《用 C 语言编写 Windows 服务程序的五个步骤》,有兴趣的朋友可以参考一下。在这里要说的是,我用的VS2003做为开发工具,与VC6有一定差别,比如main和_tmain,在引用的头文件里,也有些许不同。当我把程序封装成服务的形式,发现出了一堆错误,搞了一天,也不知道是哪里的问题。最后,左思右想,百度谷歌,终于找到了问题的本质。归为一句话就是要“注意引用头文件的先后顺序”!这个问题说大不大,说小不小,错误难找,很让人头疼。写下此文,告之遇到类似问题的朋友们,你们的程序没有错误,但请改变一下引用的H文件的顺序!像我这个例子来说,顺序如下:

#include “stdafx.h”

#include <winsvc.h>

如果颠倒了,就会出现下面一堆令人头疼的错误:

正在编译…

ServerTest.cpp

e:\Project C++\ServerTest\ServerTest\ServerTest\ServerTest.cpp