看板 EE_DSnP 關於我們 聯絡資訊
我來貼一下: bool CmdParser::readCmd(istream& istr) { resetBufAndPrintPrompt(); bool newCmd = false; while (!newCmd) { ParseChar pch = getChar(istr); if (pch == INPUT_END_KEY) { if (_dofile != 0) closeDofile(); break; } switch (pch) { ... case NEWLINE_KEY : newCmd = addHistory(); cout << char(NEWLINE_KEY); if (!newCmd) resetBufAndPrintPrompt(); break; ... case TAB_KEY : { char tmp = *_readBufPtr; *_readBufPtr = 0; string str = _readBuf; *_readBufPtr = tmp; listCmd(str); break; } ... } #ifdef TA_KB_SETTING taTestOnly(); #endif } return newCmd; } 以上是跟作業二不一樣的部分, 當然,"addHistory()" 改成 return bool, 所以只要加入新的 command 到 _history 之後 newCmd 就會變成 true. ※ 引述《XDucka (Duck)》之銘言: : 老師的hw3.doc裡面提到readCmd的定義 : bool : CmdParser::readCmd(istream& istr) : { : resetBufAndPrintPrompt(); : bool newCmd = false; : while (!newCmd) { : ParseChar pch = getChar(istr); : if (pch == INPUT_END_KEY) { : if (_dofile != 0) : closeDofile(); : break; : } : switch(ch) { : ... // Refer to the codes in homework #2 : } : } : return newCmd; : } : 我想問一下就是這個fuction裡面感覺完全沒有動到newCmd : 也就是說return的值應該都是false吧?? : 但是我用gdb想debug的時候(輸入help)卻發現他變成true傳回來了 : 為什麼T_T -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.49.36
ypf791:推 10/29 14:40
vegired:推 10/29 17:08
XDucka:推 10/29 18:19