This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/MSP430F5438A:Misra 17.6 发出警告

Guru**** 2392905 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/615635/compiler-msp430f5438a-misra-17-6-giving-warning

部件号:MSP430F5438A

工具/软件:TI C/C++编译器

您好,

我在Code Composer Studio中激活了MISRA-C:2004检查,并为17.6 以下代码获取了MISRAC警告:

typedef结构

uINT8_t srcAddr;
uINT8_t目标地址;
UINT8_t帧类型;
UINT8_t cmdId;
UINT8_t数据长度;
uINT8_t dataBytes[8];
} node_info_s;

void CAN_SEND (node_info_s nodeInfo)

UINT8_t canSendBuf[13];
load_txbuf_params_s loadCanMsg;
uINT8_t dataCount =(uint8_t)0;
canSendBuf[0]= nodeInfo.srcAddr;//MISRA 17.6 警告
canSendBuf[1]= nodeInfo.destAddr; //MISRA 17.6 警告
canSendBuf[2]= nodeInfo.frameType; //MISRA 17.6 warning
canSendBuf[3]= nodeInfo.cmdId; //MISRA 17.6 警告
canSendBuf[4]= nodeInfo.dataLength; //MISRA 17.6 warning
对于(dataCount =(uint8_t) 0;dataCount < nodeInfo.dataLength;dataCount++)

canSendBuf[(uint8_t)4 + dataCount]= nodeInfo.dataBytes[dataCount];
}
loadCanMsg.param_load_txbuf = load_TXB0SIDH;
loadCanMsg.param_reg_txbuf = REG_TXB0CTRL;
loadCanMsg.param_RTS_txbuf = RTS_TXBUF0;
SPI_MCP_Load_TXBUF (loadCanMsg,nodeInfo.dataLength,canSendBuf);
}

资源位置类型#1423-D (MISRA-C:2004 17.6 /R)具有自动存储的对象的地址不应分配给在第一个对象停止存在后可能持续存在的另一个对象("nodeInfo")

 

我不理解的是 ,函数范围结束后,canSendBuf等局部变量如何继续存在? 这是否是假阳性?

 

谢谢,此致,

安杰特

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ankit Srivastava 说:
    这是否是误报?[/QUOT]

    我认为是这样。  

    感谢您告知我们此问题,并提交一个简明的测试案例。  我可以重现该问题。  我在 SDOWP系统中提交了CodeGen-3596,以对此进行调查。  欢迎您使用我签名中下面的SDOWP链接进行关注。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CodeGen-1639的副本;在MSP430 16.9 中已修复。4.LTS
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢George和考古学家:)