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.

[参考译文] MSP430FR2355:编译器警告--它们是什么意思?

Guru**** 2538955 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/957244/msp430fr2355-compiler-warnings------what-do-they-mean

器件型号:MSP430FR2355

我有以下代码可免费编译:

#include 
#include 
int main (void)
{
易失性字符 RXData[20]={[0... 19]= 0xFF}、* rxMssg;
rxMssg = RXData;
memset (&RXData、'\0'、sizeof (RXData));
LPM3;
}

然后,我转到另一个项目,在头文件中,我有:

extern volatile char RXData,*rxMssg;

在包含标题的源文件中:

memset (&RXData、'\0'、sizeof (RXData));

rxMssg = RXData;

当我编译(这个 prj 正在编译到库)时、我现在会收到以下警告:

"volatile char *"类型的#169-D 参数与"void *"类型的参数不兼容
#515-D 无法将类型"char"的值分配给类型"volatile char *"的实体

第一个警告是关于 memset 的...第二个警告是正在分配的指针...

有人能告诉我这里发生了什么?

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

    对于第二个、RXData 是一个字符而不是指针。 您正在尝试将字符(如"A")存储到地址中、这就是 rxMssg 的含义。

    RXData 的大小为1、因此 memset 在这里有点浪费、RXData ='\0'将是可以的。

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

    谢谢 Keith…

    我在这里看到了我的错误...应该是 RXData[20]!

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

    实际上、RXData[]已经足够好了。