先给大家打个招呼,先在这里发帖。
今天我发现自己想知道这段代码是否正确,它是一个朋友为微控制器写的,我没有机会再问他了。
该程序运行正常,但我无法真正决定它是否靠运气运行(不要相信编程运气)。我什至不知道这篇文章的标题是否正确,如果有误导,请见谅。编码:
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;
}
}
更确切地说,这种语法对我来说有点晦涩难懂。
return ( (char *) " Status: 1 " );
它返回一个字符 * 什么?“状态:1”字符串保存在哪里?堆/栈???
由于它的实现,字符串在函数的范围内,我假设在使用 return 语句离开函数后,我无法控制函数本身返回的指针中将写入的内容。
从我看到的方式来看,我将拥有一个具有不同可能字符串选项的全局数组,并返回一个指向 CASE 选择的正确选项的指针。所以我知道我返回的指针指向一个定义明确的内存区域。
那么这段代码是否错误?哪个是最正确的解决方案?
谢谢丹