C++异常——error C2143: 语法错误: 缺少“;”(在“enum [tag]”的前面)

今天调试代码的时候,一直调试这个bug,bing查找,chatgpt也问了,提示是:

但按照提示修改了没用,还有另外一处错误

enum class EResultType
{
    RESULT_UPDATE = 0x01,
    RESULT_START_CHG = 0x02,
};
编译也提示:

1>h:\cn_ems\code\clousoft\app\fa\FaAPI.h(37): error C2143: 语法错误: 缺少“;”(在“enum [tag]”的前面)

chatgpt的解释如下:

还有其他文件,之前都没问题的,也出问题了。

 

 

 分析,这些代码之前都没问题,只是修改了其他少数几个文件导致的,对比了下修改记录,发现就是一个头文件少了一个;

如下:

 加上之后,编译就ok了。

为啥这个头文件少了一个;导致其他文件,struct,enum出现各种问题了呢?

在C++中,头文件通常会声明一些变量、函数、结构体、枚举等类型,其他源文件通过包含该头文件来使用这些声明。

如果某个头文件声明的接口函数少写了,那么在包含该头文件的源文件中,编译器无法找到该函数的声明,就会出现C2143语法错误,提示未找到该函数的声明。

此外,由于缺少函数声明,编译器可能会将该函数的调用解析为其他类型的语句,如变量声明或表达式,导致其他类型的语法错误。这些错误可能会在工程中的多个文件中出现,因为这些文件都使用了该头文件。

因此,编写C++程序时应该注意头文件的正确性和完整性,确保所有需要使用的类型、函数等都被正确地声明和定义

综上,大家编程的时候,规范很重要:

1:不要用大而全的全局头文件,将一大堆的接口都放在这里,一旦这个头文件异常,通常这个头文件不报错(至少不会直接到你少写的;处提示的),问题查找不方便。

2:最好用namespace 将多个不同类型的接口隔离开,这样问题查找也会便利。归类整理后的接口,查看和调用都比较清晰。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术的微光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值