现在的位置: 首页 > 综合 > 正文

调整了引用顺序,感觉真是如蓝天般明朗 error C2146: 语法错误 : 缺少“;”(在标识符

2013年04月10日 ⁄ 综合 ⁄ 共 4923字 ⁄ 字号 评论关闭

>e:/work/workcode/ppc vs2008/mobilepos/gpsgui/GpsGuiDlg.h(58) : error C2146: 语法错误 : 缺少“;”(在标识符“m_ConnectManager”的前面)
1>e:/work/workcode/ppc vs2008/mobilepos/gpsgui/GpsGuiDlg.h(58) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:/work/workcode/ppc vs2008/mobilepos/gpsgui/GpsGuiDlg.h(58) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:/work/workcode/ppc vs2008/mobilepos/gpsgui/GpsGuiDlg.h(116) : error C2143: 语法错误 : 缺少“;”(在“*”的前面)
1>e:/work/workcode/ppc vs2008/mobilepos/gpsgui/GpsGuiDlg.h(116) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:/work/workcode/ppc vs2008/mobilepos/gpsgui/GpsGuiDlg.h(116) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:/work/workcode/ppc vs2008/mobilepos/gpsgui/GpsGuiDlg.h(118) : error C2146: 语法错误 : 缺少“;”(在标识符“m_mapTcp”的前面)
1>e:/work/workcode/ppc vs2008/mobilepos/gpsgui/GpsGuiDlg.h(118) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:/work/workcode/ppc vs2008/mobilepos/gpsgui/GpsGuiDlg.h(118) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:/work/workcode/ppc vs2008/mobilepos/gpsgui/GpsGuiDlg.h(121) : error C2146: 语法错误 : 缺少“;”(在标识符“m_CESeriesGps”的前面)
1>e:/work/workcode/ppc vs2008/mobilepos/gpsgui/GpsGuiDlg.h(121) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:/work/workcode/ppc vs2008/mobilepos/gpsgui/GpsGuiDlg.h(121) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>ConnectManager.cpp
1>MapTcp.cpp
1>CESeries.cpp
1>HttpSocket.cpp
1>正在生成代码...
1>生成日志保存在“file://e:/work/workcode/PPC VS2008/MobilePOS/GpsGui/Windows Mobile 6 Professional SDK (ARMV4I)/Debug/BuildLog.htm”
1>GpsGui - 12 个错误,1 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

 

 

遇到这个问题,我把几个引用问价都放在stdafx.h中,就什么问题就解决了.真是感谢下文啊.

 

http://www.cnblogs.com/tianyige/archive/2008/12/31/1365725.html  特此声明并感谢。

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

最近用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(58) : error C2146: 语法错误 : 缺少“;”(在标识符“hServStatus”的前面)
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(58) : error C2501: “hServStatus” : 缺少存储类或类型说明符
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(59) : error C2146: 语法错误 : 缺少“;”(在标识符“hSStat”的前面)
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(59) : error C2501: “hSStat” : 缺少存储类或类型说明符
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(75) : error C2065: “SERVICE_TABLE_ENTRY” : 未声明的标识符
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(75) : error C2146: 语法错误 : 缺少“;”(在标识符“DispatchTable”的前面)
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(75) : error C2065: “DispatchTable” : 未声明的标识符
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(75) : error C2059: 语法错误 : “]”
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(75) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(76) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(76) : warning C4550: 表达式计算为缺少参数列表的函数
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(76) : error C2143: 语法错误 : 缺少“;”(在“,”的前面)
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(77) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(77) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(80) : error C3861: “StartServiceCtrlDispatcher”: 即使使用参数相关的查找,也未找到标识符
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(80) : error C3861: “DispatchTable”: 即使使用参数相关的查找,也未找到标识符
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(87) : error C2065: “SC_HANDLE” : 未声明的标识符
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(87) : error C2146: 语法错误 : 缺少“;”(在标识符“schSCManager”的前面)
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(87) : error C2065: “schSCManager” : 未声明的标识符
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(88) : error C2146: 语法错误 : 缺少“;”(在标识符“schService”的前面)
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(88) : error C3861: “SC_HANDLE”: 即使使用参数相关的查找,也未找到标识符
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(88) : error C2065: “schService” : 未声明的标识符
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(99) : error C2065: “SC_MANAGER_ALL_ACCESS” : 未声明的标识符
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(99) : error C3861: “schSCManager”: 即使使用参数相关的查找,也未找到标识符
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(99) : error C3861: “OpenSCManager”: 即使使用参数相关的查找,也未找到标识符
e:/Project C++/ServerTest/ServerTest/ServerTest/ServerTest.cpp(101) : error C3861: “schSCManager”: 即使使用参数相关的查找,也未找到标识符
......
如果引用顺序正确了,你的程序就会像越狱第三季中的那个监狱老大说的一样:如蓝天般明朗。

 

抱歉!评论已关闭.