现在的位置: 首页 > 综合 > 正文

一行逻辑错误,但语法没有错误的代码

2013年08月10日 ⁄ 综合 ⁄ 共 710字 ⁄ 字号 评论关闭

  用C++调用windows API进行非阻塞TCP通信,其中一行代码被我写成了如下:

这段代码编译没有任何错误与警告,但结果并不是我想要的。调试了半天也没有结果。最后实在没有办法,我把代码拷到CodeBlocks中,用GCC编译,结果一样。再次重新检查代码的时候,才发现,绑定本地ip与端口的这行代码很诡异。我尽然把bind(...)写成了(...)。==操作符右边是一个逗号表达式,返回sizeof(addr),刚好是一个整形,所以语法没有任何错误。正确的代码应该这样:

我想我在写代码的时候,应该不至于把bind(...)写成(...),可能是在编码过程中,不小心把"bind"给ctrl + x了。但这样的错误实在是难以发现。

 

  如果用C#写类似的代码,我相信自己不会犯这样的错误。因为在.NET平台下,所有的类,枚举在编辑器上显示的颜色与一般的方法,属性是不一样的;同时因为.NET的对象是自我描述的,强大的智能提示功能也减小了犯类似错误的概率。确实,一个好的工具,能提高编码的效率,减少犯错误的机会。想想,如果.NET没有Visual Studio这样的配套工具,可能.NET也不会有今天这样的流行。

抱歉!评论已关闭.