SerialPort comstat is being used without defining
Run-Time Check Failure #3 - The variable 'comstat' is being used without being initialized.
參考:http://blog.sina.com.cn/s/blog_5d2412000100ojx3.html
 方案1: 改變項(xiàng)目配置屬性
 ??? 一種解決方案是改變基本運(yùn)行時(shí)檢查(changing the runtime checks in project settings):在菜單Project->Project properties-> C/C++ -> Code generation-> Basic Runtime checks --> change to 'Default',在中文版中是:項(xiàng)目-〉屬性-〉配置屬性-〉C/C++代碼生成-〉基本運(yùn)行時(shí)檢查-〉設(shè)置為默認(rèn),當(dāng)將基本運(yùn)行時(shí)檢查改為默認(rèn)之后,編譯自然順利通過了,向串口調(diào)試助手發(fā)送消息正常了,再從串口調(diào)試助手向SerialPortTest發(fā)送消息時(shí),也正常了。
 方案2:改變comstat變量屬性
 ???? 另一種解決方案是將CSerialPort.CPP中的COMSTAT comstat;改為static COMSTAT comstat;這樣改了之后,debug順利通過,然后調(diào)試,與串口調(diào)試助手相互發(fā)消息都OK了。為什么這樣就能解決呢?其實(shí)當(dāng)你使用debug解決方案時(shí),它的基本運(yùn)行時(shí)檢查初始設(shè)置為:兩者(/RTC1,等同于 /RTCsu),這個兩者是指:堆棧幀(/RTCs),未初始化的變量(/RTCu)。由于它要檢查未初始化的變量,所以將SerialPort.cpp中的COMSTAT comstat;改為static COMSTAT comstat;就可以正常使用CSerialPort類了。
 ???? 以上是在debug下的解決方案,當(dāng)在Release編譯狀態(tài)時(shí),你會發(fā)現(xiàn)并不需要將COMSTAT comstat;改為static COMSTAT comstat;就能編譯成功并且發(fā)送接收消息正常。其實(shí),在Release下,它的基本運(yùn)行時(shí)檢查初始設(shè)置已為默認(rèn)。這應(yīng)該也算是第一種解決方案之內(nèi)。
 ??? 而當(dāng)你將它設(shè)置為兩者(/RTC1,等同于 /RTCsu)時(shí),不論是否將COMSTAT comstat;改為static COMSTAT comstat;,編譯都不能通過,報(bào)錯““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)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: JavaScript常用正则表达式收集
 - 下一篇: 科学家发现低温有助减肥 网友:热胀冷缩