|
以前一直都是做MIPS的,现在改行做51,感觉比较痛苦。很多东西都和以前不一样的,限制的东西蛮多的。MIPS C语言和标准C基本是没有差别的,可以C51就不一样啦~~~,今日遇到一个问题,请各位大侠帮忙解答一下,这个function是我自己写的,后来感觉不正常,怎么可以将函数中的声明的字符串指针返回呢,在标准C中是绝对不错误的,函数中的所有的声明的变量都是在堆栈中,函数执行完以后会被清除,使用堆栈中的指针,得到的东西是不确定。可是下面函数在C51中却是正确的,这是怎么回事?难道C51中函数声明的数组不是在堆栈中分配的嘛?
/**************************************************************************
* Function Name: RtcClockText *
* Purposes: Clock2Text *
* Descriptions: *
* Arguments: *
* Returns: *
* See also: *
**************************************************************************/
U8* RtcClockDispText(void)
{
#define A_HOUR_TOL ((U32)60 * 60 * 10)
#define A_MINUTE ((U32)60 * 10)
#define A_SECOND_TOL ((U32)10)
U8 u8StringBuffer[9];
//printf("---> %ld")
U32 RTCtime = MDrv_GetRtcClock();
// printf("---> RTCtime %ld \r\n",RTCtime);
MApp_UlongToString(RTCtime / A_HOUR_TOL, &u8StringBuffer[0], 2 );
u8StringBuffer[2] = CHAR_COLON;
MApp_UlongToString((RTCtime % A_HOUR_TOL) / (A_MINUTE), &u8StringBuffer[3], 2 );
u8StringBuffer[5] = CHAR_COLON;
MApp_UlongToString((RTCtime % A_MINUTE) / A_SECOND_TOL, &u8StringBuffer[6], 2 );
u8StringBuffer[8] = 0;
return u8StringBuffer;
}
|
|