日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SerialPort comstat is being used without defining

發(fā)布時間:2023/12/13 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SerialPort comstat is being used without defining 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Run-Time Check Failure #3 - The variable 'comstat' is being used without being initialized.

參考:http://blog.sina.com.cn/s/blog_5d2412000100ojx3.html


方案1: 改變項目配置屬性


??? 一種解決方案是改變基本運行時檢查(changing the runtime checks in project settings):在菜單Project->Project properties-> C/C++ -> Code generation-> Basic Runtime checks --> change to 'Default',在中文版中是:項目-〉屬性-〉配置屬性-〉C/C++代碼生成-〉基本運行時檢查-〉設(shè)置為默認(rèn),當(dāng)將基本運行時檢查改為默認(rèn)之后,編譯自然順利通過了,向串口調(diào)試助手發(fā)送消息正常了,再從串口調(diào)試助手向SerialPortTest發(fā)送消息時,也正常了。


方案2:改變comstat變量屬性


???? 另一種解決方案是將CSerialPort.CPP中的COMSTAT comstat;改為static COMSTAT comstat;這樣改了之后,debug順利通過,然后調(diào)試,與串口調(diào)試助手相互發(fā)消息都OK了。為什么這樣就能解決呢?其實當(dāng)你使用debug解決方案時,它的基本運行時檢查初始設(shè)置為:兩者(/RTC1,等同于 /RTCsu),這個兩者是指:堆棧幀(/RTCs),未初始化的變量(/RTCu)。由于它要檢查未初始化的變量,所以將SerialPort.cpp中的COMSTAT comstat;改為static COMSTAT comstat;就可以正常使用CSerialPort類了。
???? 以上是在debug下的解決方案,當(dāng)在Release編譯狀態(tài)時,你會發(fā)現(xiàn)并不需要將COMSTAT comstat;改為static COMSTAT comstat;就能編譯成功并且發(fā)送接收消息正常。其實,在Release下,它的基本運行時檢查初始設(shè)置已為默認(rèn)。這應(yīng)該也算是第一種解決方案之內(nèi)。
??? 而當(dāng)你將它設(shè)置為兩者(/RTC1,等同于 /RTCsu)時,不論是否將COMSTAT comstat;改為static COMSTAT comstat;,編譯都不能通過,報錯““cl.exe”返回的結(jié)果有誤。",這個應(yīng)該是屬于Release的問題了,另當(dāng)別論了。

?

方案3:

添加代碼:memset(&comstat, 0, sizeof(COMSTAT)); //VC6不用這句也可以用,2008就要加

轉(zhuǎn)載于:https://www.cnblogs.com/whisht/archive/2011/11/23/2319342.html

總結(jié)

以上是生活随笔為你收集整理的SerialPort comstat is being used without defining的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。