中不应有未使用的形参"/>
【MISRA C 2012】Rule 2.7 函数中不应有未使用的形参
- 1. 规则
- 1.1 原文
- 1.2 分类
- 2. 关键描述
- 3. 代码实例
1. 规则
1.1 原文
Rule 2.7 There should be no unused parameters in functions
Category Advisory
Analysis Decidable, Single Translation Unit
Applies to C90, C99
1.2 分类
规则2.7:函数中不应有未使用的形参
Advisory建议类规范。
2. 关键描述
大多数函数将被指定为使用它们的每个参数。如果函数参数未使用,函数的实现可能与规范不匹配。这条规则突出了这种潜在的不匹配
3. 代码实例
例1,规范中例程:
其中,unusedpara函数入参是没有使用到,是不允许的。
void withunusedpara (uint1 6_t *para1, int16_t unusedpara ) /* Non-compliant - unused */
{*para1 = 42U;
}
例2,判断以下代码
/*******************************************************************************
** Syntax : W25qxx_Spi(uint8_t Data, uint8_t *rData) **
** **
** Service ID: : NA **
** **
** Sync/Async: : Synchronous **
** **
** Reentrancy: : Reentrant **
** **
** Parameters (in): Data **
** **
** Parameters (out): rData **
** **
** Return value: uint8_t **
** **
** Description : read/write data with SPI peri W25Q32 module **
*******************************************************************************/
uint8_t W25qxx_Spi(uint8_t Data, uint8_t *rData)
{uint32 LoopCount = 0;writebuf[0] = Data;Spi_WriteIB(W25QXX_CHANNEL_16BIT_IB_2, (uint8 *) &writebuf[0]);(void)Spi_SyncTransmit(W25QXX_SEQUENCE);while((Spi_GetSequenceResult(W25QXX_SEQUENCE) != SPI_SEQ_OK) && (LoopCount < W25QXX_SPI_TIMEOUT)) {if(Spi_GetSequenceResult(W25QXX_SEQUENCE) == SPI_SEQ_FAILED) {break;} else {/*Nothing*/}LoopCount++;}Spi_ReadIB(W25QXX_CHANNEL_16BIT_IB_2, (uint8 *)&readbuf[0u]);if(Spi_GetSequenceResult(W25QXX_SEQUENCE) == SPI_SEQ_OK) {return readbuf[0];} else {Spi_Cancel(W25QXX_SEQUENCE);return 0;}
}
其中rdata是出参,应该读取spi读出的数据,但是这里没有使用到,实际以return值为读取数据,入参指针并未使用到,因此不符合Rule 2.7规范。
更多推荐
【MISRA C 2012】Rule 2.7 函数中不应有未使用的形参
发布评论