c++ error C2143: 语法错误 : 缺少“;”

mrq1993 2018-08-13 01:29:09
在头文件定义一个类时,编译提示语法错误,“error C2143: 语法错误 : 缺少“;”(在“<class-head>”的前面)”,不明白为什么,求解,感谢!
class CalFormula
{
public:
static float Calculate(float A,float B);
};
...全文
1133 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
李水云 2018-08-14
  • 打赏
  • 举报
回复
双击提示问题的那一行,会指向你出错的地方,在周围找找就行。
mrq1993 2018-08-14
  • 打赏
  • 举报
回复
感谢各位,我在class成员之前添加了构造函数就可以了
class CalFormula
{
public:
CalFormula(void);
~CalFormula(void);
static float Calculate(float A,float B);
xingeddx 2018-08-14
  • 打赏
  • 举报
回复
class CalFormula这个前面加分号
赵4老师 2018-08-14
  • 打赏
  • 举报
回复
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
月凉西厢 2018-08-14
  • 打赏
  • 举报
回复
VS2017实测,编译通过。绝对有其他东西你没贴出来
mrq1993 2018-08-14
  • 打赏
  • 举报
回复
引用 9 楼 wjintao 的回复:
完整的头文件发上来看看

就是写了一个小样,这就是全部了
mrq1993 2018-08-14
  • 打赏
  • 举报
回复
引用 8 楼 a34140974 的回复:
应该是这个头文件中包含的一个#include"XXX.h",这个xxx.h内有问题,而不是当前文件有问题。遇到过很多次了,仔细检查一下就知道了。

并没有包含其他头文件
mrq1993 2018-08-14
  • 打赏
  • 举报
回复
引用 7 楼 zjq9931 的回复:
[quote=引用 6 楼 mrq1993 的回复:]
[quote=引用 3 楼 zjq9931 的回复:]
文件名.cpp的文件,命名成了.c的文件?

这是在头文件里,后缀是.h[/quote]
当然知道是头文件了,如果是.c的文件包含这个头文件,就会编译错误的,错误的位置肯定是在头文件里面啊。
不知道你确认没有呢?是不是有.c的文件包含了这个头文件呢?[/quote]
没有.c的文件,是Cpp
  • 打赏
  • 举报
回复
error C2143: 语法错误 : 缺少“;”(在“<class-head>”的前面)
显然问题不在你贴的这段代码中
wjintao 2018-08-13
  • 打赏
  • 举报
回复
完整的头文件发上来看看
月凉西厢 2018-08-13
  • 打赏
  • 举报
回复
应该是这个头文件中包含的一个#include"XXX.h",这个xxx.h内有问题,而不是当前文件有问题。遇到过很多次了,仔细检查一下就知道了。
  • 打赏
  • 举报
回复
引用 6 楼 mrq1993 的回复:
[quote=引用 3 楼 zjq9931 的回复:]
文件名.cpp的文件,命名成了.c的文件?

这是在头文件里,后缀是.h[/quote]
当然知道是头文件了,如果是.c的文件包含这个头文件,就会编译错误的,错误的位置肯定是在头文件里面啊。
不知道你确认没有呢?是不是有.c的文件包含了这个头文件呢?
mrq1993 2018-08-13
  • 打赏
  • 举报
回复
引用 3 楼 zjq9931 的回复:
文件名.cpp的文件,命名成了.c的文件?

这是在头文件里,后缀是.h
mrq1993 2018-08-13
  • 打赏
  • 举报
回复
引用 2 楼 zhao3132453 的回复:
我看着像是最后标点符号的事,估计误打成中文的了

没有啊,懵逼了
mrq1993 2018-08-13
  • 打赏
  • 举报
回复
引用 1 楼 zzxiaoma 的回复:
最后的;应该不用要吧

去掉也是提醒这个
  • 打赏
  • 举报
回复
文件名.cpp的文件,命名成了.c的文件?
半雨微凉丶 2018-08-13
  • 打赏
  • 举报
回复
我看着像是最后标点符号的事,估计误打成中文的了
zzxiaoma 2018-08-13
  • 打赏
  • 举报
回复
最后的;应该不用要吧
网上下载了emule0.50a-Xtreme8.1-sources源码,声称可以在VS2008下直接编译成功,经我实际测试,系统会报错,其中第一类错误,由于系统中为了兼容VISTA/WIN7,增加了相关定义,而这些定义在XP/WIN2003环境下会报错,共771个错误,如: 错误 2 error C2065: “ITaskbarList3”: 未声明的标识符 d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 195 emule 错误 3 error C2146: 语法错误 : 缺少“;”(在标识符“m_thbButtons”的前面) d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 196 emule 错误 4 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 196 emule 错误 5 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 196 emule 错误 6 error C2146: 语法错误 : 缺少“;”(在标识符“m_currentTBP_state”的前面) d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 198 emule 错误 7 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 198 emule 错误 8 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 198 emule 错误 10 error C2065: “ITaskbarList3”: 未声明的标识符 d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 195 emule ...... 此类错误中,ITaskbarList3是VISTA/WIN7环境下与任务栏相关的变量,只要屏闭掉相关定义就能正常。 除此之外还报有下面 5 个错误(实际引起错误的位置只有两个): 错误 135 error C2059: 语法错误 : “:” d:\eMule\srchybrid\BaseClient.cpp 1603 emule 错误 136 error C2065: “tagName”: 未声明的标识符 d:\eMule\srchybrid\BaseClient.cpp 1604 emule 错误 137 error C2228: “.WriteTagToFile”的左边必须有类/结构/联合 d:\eMule\srchybrid\BaseClient.cpp 1604 emule 错误 139 error C2001: 常量中有换行符 d:\eMule\srchybrid\BaseClient.cpp 4832 emule 错误 140 fatal error C1057: 宏展开中遇到意外的文件结束 d:\eMule\srchybrid\BaseClient.cpp 4832 emule 此类错误中,实际上是是两个语法错误,由于太过简单,我与网友都怀疑是作者故意制造的错误,若是完全不懂C++的人,即使拿到源码,编也会报错,从而止步于此。而稍懂C++的人(本人即是此类菜鸟),则可以找出错误之处。 为方便诸多象我一样的初学者,我把修正之后,可以在 XP/WIN2003 +VS2003SP1 环境下直接编译成功的emule0.50a-Xtreme8.1-sources源码发布上来,以便互相学习交流。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧