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

if (hCon==(HANDLE)-一) //这句看不懂,HANDEL的定义为 typedef void *HAN

2012-10-20 
if (hCon(HANDLE)-1) //这句看不懂,HANDEL的定义为typedef void *HANC/C++ codehConCreateFile(COM1,

if (hCon==(HANDLE)-1) //这句看不懂,HANDEL的定义为 typedef void *HAN

C/C++ code
    hCon=CreateFile("COM1",                        //串口名称        GENERIC_READ|GENERIC_WRITE,                //允许读和写        0,                                         //独占方式        NULL,        OPEN_EXISTING,                             //打开而不是创建        FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,//重叠方式        NULL);    if (hCon==(HANDLE)-1)                      //这句看不懂,HANDEL的定义为  typedef void *HANDLE;    {        MessageBox("打开com口失败!");        return FALSE;    }    SetupComm(hCon,100,100);                       //输入缓冲区和输出缓冲区的大小都是100    COMMTIMEOUTS TimeOuts;                         //超时时    TimeOuts.ReadIntervalTimeout=MAXDWORD;    TimeOuts.ReadTotalTimeoutMultiplier=0;    TimeOuts.WriteTotalTimeoutConstant=0;    TimeOuts.WriteTotalTimeoutMultiplier=100;    SetCommTimeouts(hCon,&TimeOuts);//设置超时    DCB dcb;    GetCommState(hCon,&dcb);    dcb.BaudRate=9600;    dcb.ByteSize=8;//每个字节有8位    dcb.Parity=NOPARITY;//无奇偶校验    dcb.StopBits=TWOSTOPBITS;//两个停止位    SetCommState(hCon,&dcb);    PurgeComm(hCon,PURGE_TXCLEAR|PURGE_RXCLEAR);


  if (hCon==(HANDLE)-1) 对于该语句, 我有一点不明,HANDLE算哪门子的变量呢,它不是定义的一个VOID类型吗(typedef void *HANDLE),为何可以相加减?typedef void *HANDLE的真正含义是什么呢,该怎样理解?HANDLE-1又是什么意思呢,求教。

[解决办法]
这个有点意思.
-1 可以是 减-, 可以是 负1.
此处应该是负1.
[解决办法]
if (hCon==(HANDLE)-1) 对于该语句, 我有一点不明,HANDLE算哪门子的变量呢,

看到这里真心笑了, 当然不是嘲笑哈, 是因为我曾经也这么理解过.

实际它想做的是把 -1强制转换成 HANDLE类型.

如果这里不是HANDLE,而是int if( hCon = (int)-1 ),我想楼主就不会把int看成是变量了吧.

这里也提醒了, 多加括号,提高程序可读性啊.
如果是
if (hCon==(HANDLE)(-1)) 这想楼主也不会把 HANDLE理解成变量了.
[解决办法]
if (hCon==(HANDLE)-1) 这么些 表示很蛋疼
if (INVALID_HANDLE_VALUE == hCom) 这样才是正确写法
msdn都写着呢用 INVALID_HANDLE_VALUE 判断,还非要这样写。

#define INVALID_HANDLE_VALUE ((HANDLE)(LONG_PTR)-1)

热点排行