以下代码,创建一个socket,
m_maintunnel=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if(m_maintunnel==INVALID_SOCKET);
{
return 0;
}
调试时,观察m_maintunnel 创建成功,观察其值为1992等等,按道理m_maintunnel==INVALID_SOCKET应该返回false,但是程序始终会返回true,同样的代码在另外的程序编译中一点问题都没有,偏偏在这个程序就有问题。怀疑是vc++.net的编译有问题。
而且程序只要去处这个if语句,可以正常的运行。不信的话,可以看看这张图片: http://dance.nease.net/error.htm以上是我遇到的问题,不知道怎么回事

解决方案 »

  1.   

    if(m_maintunnel==INVALID_SOCKET);此语句最后多一个分号。 不是笔误吧?
      

  2.   

    看了下错误图片, 真的是这个原因。 
    因为有个分号,所以永远执行return 0 ;真要给500分么?
      

  3.   

    if(m_maintunnel==INVALID_SOCKET)
    {
    return 0;
    }
    后面的分号也去掉
      

  4.   

    if(m_maintunnel == INVALID_SOCKET)
    {
    return 0;
    }把 Warning Level 开到 level 4 应该有警告的
      

  5.   

    哈哈哈哈,我找到错误了!if语句那一行多了一个分号
    应该就是这个原因了吧VS.NET对这个是有WARNING的,你没有看到吗?