我使用的工具檢查下面的代碼的編碼標準投訴,「只能從循環中退出一次」。它表示「while(len < totalLen)」循環下面有一個額外的退出方式。它說「所有結構(函數,循環)都需要單個入口和單個出口」。我對此感到困惑,因爲它抱怨的while循環只有一個退出標準。退出循環
單個條目和單個退出條件的含義是什麼,下面的代碼如何違反它。 while循環中的if條件是必需的。如何保持它,並抱怨編碼標準
while (len < (totalLen))
{
switch (*(structAddr + len - 1))
{
case CASEA: //8 byte data
while (len < totalLen)
{
if ((*(structAddr + len) == CASE0)) //this means there is no 8 byte data left to swap
{
arr[len] = *(nvStruct + len);
break;
}
arr[len] = *(structAddr + len + 1);
arr[len + 1] = *(structAddr + len);
len = len + 2;
}
break;
case CASEB: //2 byte data
while ((*(structAddr + len + 1) != CASE0) && (len < totalLen))
{
arr[len] = ((*(structAddr + len) << 16) & (0xffff0000)) |
((*(structAddr + len) >> 16) & (0x0000ffff));
len++;
}
break;
default: //4 byte data - no swap needed
arr[len] = *(structAddr + len);
}
len++;
}
}
它應該抱怨代碼的不一致性。 –
請給我們一個完整的工作示例並正確縮進您的代碼 – savram