如何修复此语句可能会通过 [-Werror=implicit-fallthrough=]?
Posted
技术标签:
【中文标题】如何修复此语句可能会通过 [-Werror=implicit-fallthrough=]?【英文标题】:How to fix this statement may fall through [-Werror=implicit-fallthrough=]? 【发布时间】:2018-07-21 07:10:42 【问题描述】:做什么
this statement may fall through [-Werror=implicit-fallthrough=]
意思是?
我在编译这样的语句时遇到这个错误:
switch(eT)
case SEL_CRIT:
TYPE1* psSel;
iRetVal = dbseq(enB->m_ps,
NULL, NULL, &esM, NULL, ESEC);
while (iRetVal == 0)
if(psEnterprise)
bool iFound = false;
for (i = 0; i< psME->m_pslave[0].m_uc; i++)
ENT node1;
sEOS = psME>m_pslave[0].m_pslavecnt[i];
if (iFound && (psME->m_NOTOVERLOADED == false))
return psME;
psSel = (M_EN*)pCrit;
LOG_INFO(FAIL_TO_LOAD, psME->m_ONG, psME->EN);
int_Enterprise = NULL;
在
int_Enterprise = NULL;
在哪里
int_Enterprise 是一些结构指针。
我该如何解决这个问题?
【问题讨论】:
请给周围的代码。 你现在应该知道如何创建Minimal, Complete, and Verifiable Example了。 在现代 c++ 中,NULL
应避免使用并由nullptr
代替。哦,等等,变量名表明它是一个 int?那么您可能希望将 NULL 替换为 0。并不是说它不会修复警告,但它会使代码更易于阅读和理解。
这是什么编程语言? C 还是 C++?
这是我很长时间没有接触过的大型代码库的一部分,之前是为旧操作系统(如 9 年前)编写的,我决定将其移植到更新的 Ubuntu 18.04。所以我不太确定从那以后发生了什么变化。
【参考方案1】:
case:
末尾没有break;
,因此执行将进入下一个case
。添加 break
语句以防止如果您想要的话,或者添加 [[fallthrough]]
属性,如果您想要的话。
【讨论】:
谢谢。是的,这正是我所缺少的。以上是关于如何修复此语句可能会通过 [-Werror=implicit-fallthrough=]?的主要内容,如果未能解决你的问题,请参考以下文章