首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

项目中看到的先人的代码.不是很明白.难道这是可以的吗.该如何处理

2012-02-16 
项目中看到的先人的代码.不是很明白.难道这是可以的吗.项目中看到的先人的代码.不是很明白.难道这是可以的

项目中看到的先人的代码.不是很明白.难道这是可以的吗.
项目中看到的先人的代码.不是很明白.难道这是可以的吗.
先人是我现在使用平台的创始人,这样的代码规范吗?有什么样的危险吗?    
欢迎大家讨论.  
//The   original   code   has   been   replaced   by   me.

char   *   GetMsgBuf();
main()
{
  char   *   pMsgBuf;
  char   *   sTextBody;
  ...
  sTextBody   =   (char   *)malloc(100*sizeof(char));
 
  ...
  pMsgBuf   =   GetMsgBuf();
  if(pMsgBuf)
  {
          strncpy(sTextBody,pMsgBuf,MAX_LEN);
  }
    ...
}

char   *   GetMsgBuf()
{
            char   MsgData[100];
            memset(MsgData,   0x00,   MAX_MSG_DATA   *   sizeof(cahr));
            //process   MsgData,   for   example:
            strcpy(MsgData,   "How   are   you ");
            ..
            return   MsgData;          
}

[解决办法]
...行了兄弟,这个代码很危险。。。他返回了一个数组指针。。。这是不被允许的。
这是一个低级错误。
[解决办法]
这代码很不好,至少有一个大问题和两个小问题。

大问题是GetMsgBuf返回局部数组,很危险的行为。
小问题包括不必要地违反“谁申请,谁放弃”的原则,魔述数字跟宏定义混用,这些都会导致代码难于维护。

不过楼主也乱用词,什么“先人”,“先人”这个词是乱用的吗?

热点排行