回顾自己写过最蠢的代码

回顾自己写过最蠢的代码,记录一下,时常警醒自己,另外由于时间的关系只能列举一二,有空再慢慢添加了。

1:if判断语句,=与== 的疏漏

int mCount = 0;
    for (int i = 0; i < 10; i++)
    {
        if (i = 2)
        {
            QString strFormat;
            mCount++;
            strFormat=QString("\n curent now i is: %d  ,count is :%d").arg(i).arg(mCount);
            qDebug() << strFormat;
        }

    }
    qDebug() << "printover";

简单的几句代码,结果导致程序进入了死循环,究其原因便是==与=的疏漏。

2:count++ 用来作延时,也有卡死的时候,尤其在多线程中慎用。

bool bOK = false;
    int waitTime = 0;
    bool bTimeout = false;
    while (DCMM->PCard->IsAxisRunning(index)  )//
    {
        if (waitTime > 60000)
        {
            bTimeout = true;
            break;
        }
        waitTime++;  //waitTime++ 这种计数方式是错误的,极易引起堵塞线程
        Sleep(1);
    }
   

正确的写法应该用GetTickCount()之类的函数去写,或者这样:

void delay_us(void)
{
    LARGE_INTEGER litmp;
    LONGLONG QPart1, QPart2;
    double dfMinus, dfFreq, dfTim;
    QueryPerformanceFrequency(&litmp);
    dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率  
    QueryPerformanceCounter(&litmp);
    QPart1 = litmp.QuadPart;// 获得初始值  
    do {
        QueryPerformanceCounter(&litmp);
        QPart2 = litmp.QuadPart;//获得中止值  
        dfMinus = (double)(QPart2 - QPart1);
        dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒  
    } while (dfTim<0.000001);
}

3:对象指针作引用参数传递,应该用指针的指针**Pointer

举个例子:

 已知: CStudent mP1;

 要求生成Student的函数:

要想用CStrudent* 做指针传递,函数得这样写:

void GeneratorStudent(CStudent** mpy)

{

   *mpy=new CStudent(L"小明");

}

4:未初使化,未分配内存的指针,直接使用就会崩溃的喔

举个例子:

LPVOID mPoint; //表示任意指什变量

mPoint->setValue(20);//未作任何初使化new的过程就直接调用,肯定会崩了

5: 全局只有一个对象,UI界面对象却是用在栈上,在多线程中容易发生冲突

比如小组同事开发了一个新界面,现在要把它作为新对象new起来,嵌入到主界框架中,如果直接在函数内部 CPageWinX* mPWin=new CPageWinX();

用是能用,但在多线程中更新的时候容易产生访问权限冲突之类的问题,正确的做法是将mPwin作为全局变量,或是在头文件声明为成员变量即可。

PS:这种细节比较发现,对异常需要细心又耐心的Debug跟踪才行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海木漄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值