串口项目——Cseiralport类的应用(1 )
相比最早的發布版本,在實際應用中 Cserialport必須要修改一些地方 后續會陸續放出
標記一: Run-Time Check Failure #3 - The variable 'comstat' is being used without being initialized
錯誤解決方法
方案1: 改變項目配置屬性
????一種解決方案是改變基本運行時檢查(changing the runtime checks in project settings):在菜單Project->Project properties-> C/C++ -> Code generation-> Basic Runtime checks --> change to 'Default',在中文版中是:項目-〉屬性-〉配置屬性-〉C/C++代碼生成-〉基本運行時檢查-〉設置為默認,當將基本運行時檢查改為默認之后,編譯自然順利通過了,向串口調試助手發送消息正常了,再從串口調試助手向SerialPortTest發送消息時,也正常了。
方案2:改變comstat變量屬性
?
?????另一種解決方案是將CSerialPort.CPP中的COMSTAT comstat;改為static COMSTAT comstat;這樣改了之后,debug順利通過,然后調試,與串口調試助手相互發消息都OK了。為什么這樣就能解決呢?其實當你使用debug解決方案時,它的基本運行時檢查初始設置為:兩者(/RTC1,等同于 /RTCsu),這個兩者是指:堆棧幀(/RTCs),未初始化的變量(/RTCu)。由于它要檢查未初始化的變量,所以將SerialPort.cpp中的COMSTAT comstat;改為static COMSTAT comstat;就可以正常使用CSerialPort類了。
?????以上是在debug下的解決方案,當在Release編譯狀態時,你會發現并不需要將COMSTAT comstat;改為static COMSTAT comstat;就能編譯成功并且發送接收消息正常。其實,在Release下,它的基本運行時檢查初始設置已為默認。這應該也算是第一種解決方案之內。
????而當你將它設置為兩者(/RTC1,等同于 /RTCsu)時,不論是否將COMSTAT comstat;改為static COMSTAT comstat;,編譯都不能通過,報錯““cl.exe”返回的結果有誤。",這個應該是屬于Release的問題了,另當別論了。
?
方案3:
添加代碼:memset(&comstat, 0, sizeof(COMSTAT)); //VC6不用這句也可以用,2008就要加
?
本人使用2008 直接方案三
轉載于:https://www.cnblogs.com/bigworld/archive/2012/05/31/2528211.html
總結
以上是生活随笔為你收集整理的串口项目——Cseiralport类的应用(1 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centOS安装python3.7.2
- 下一篇: 总结Selenium WebDriver