第一个给大家,第一个发布在这里.
今天我发现自己想知道这段代码是否正确,它是由朋友写的时间用于微控制器,我没有机会再问他了.
该程序工作正常,但我不能真正决定它是否运气好运(不要相信编程运气).我甚至不知道这篇文章的标题是否正确,对不起,如果它可能会产生误导.代码:
char *textStatusErrorMessage( unsigned int codeStatus )
{
switch ( codeStatus ) {
case STATUS_1:
return ( (char *) " Status: 1 " );
break;
case STATUS_2:
return ( (char *) " Status: 2 " );
break;
default:
sprintf( tmpBuf, " UNKNOWN STATUS %03d ", codeStatus );
return ( (char *) tmpBuf ); //tmpBuf is global
break;
}
}
Run Code Online (Sandbox Code Playgroud)
更准确地说,这种语法对我来说有点模糊.
return ( (char *) " Status: 1 " );
Run Code Online (Sandbox Code Playgroud)
它返回什么的char*?保存"Status:1"字符串在哪里?堆/堆栈???
实现时,字符串在函数的范围内,我假设在使用return语句离开函数后,我无法控制函数本身返回的指针.
从我看到的方式来看,我将拥有一个具有不同可能的字符串选项的全局数组,并返回指向CASE选择的正确数组的指针.所以我知道我返回的指针是一个明确定义的内存区域.
那么这段代码是错还是不错?哪个是最正确的解决方案?
谢谢DAN