请教关于evc中sizeof()函数的问题
大哥大姐们好!小弟这儿有礼了!一定给分!
我在写一个读取串口的程序,但是在其中的sizeof()函数中遇到了问题。当要向串口写数据时,我使用了函数
fWriteStat = WriteFile(hCom, lpBuf, sizeof(lpBuf),&dwHaveNumWritten,NULL);
其中lpBuf定义为char *lpBuf 类型。
但是无论我给lpBuf什么样子的值,都只能传输四个字节给串口。比如我要传数据w shao...,但是串口的另一端只能接收到w s。后面的字符都接收不到。
这里我用串口调试工具接受串口数据,接受部分肯定没有问题。并且,当我把sizeof(lpBuf)该成40时,即
fWriteStat = WriteFile(hCom, lpBuf, 40,&dwHaveNumWritten,NULL);
串口可以成功的将40个字符顺利传出。
请问为什么会出现这个问题?莫非是不该用sizeof()还是因为sizeof()里的参数类型不对?
或者说我打得sdk有问题?
谢谢,一定给分,我信誉很好
[解决办法]
是sizeof()的问题...
sizeof要对一个空间取长度的时候,必须要求这个类型在本文件域内有确定的显示的长度
你传入的是一个地址,这个地址不明确,所以它就取这个地址的类型了
如果你传入一个数组,数组是确定长度的,这就安全明确了....
你传:
char TBuf[40];
sizeof(TBuf[]);