好吧,我會保持這個簡單,並不包括所有的代碼(但),如果我不需要。我的內心感覺告訴我,這可能是一個簡單的答案,我像往常一樣忽略它。更沒有經驗的人可能會說編譯器是問題,但我從來不知道99.999%的情況下,它總是以某種方式出現錯誤,所以......問題在這裏。 我有一個程序,這個程序應該輸出兩個字符串,沒有什麼花哨步驟調試工作正常,但沒有步進調試導致奇怪的錯誤,當使用_tprintf
TCHAR* firststring = _T("FirstValue");
TCHAR* secondstring = _T("SecondValue");
_tprintf(_T("%s\n"),firststring);
_tprintf(_T("%s\n"),secondstring);
,輸出..
firststring
在我的代碼的特定部分,這不起作用(它的工作原理其他地方),除非我是分步過調試......那麼這是很好...
firststring
secondstring
我都甚至試圖合併操作到一個做這個:
_tprintf(_T("%s\n[%s]\n"),firststring,secondstring);
我的結果是,第一個字符串,以及括號來試圖指出,串試圖將打印出來,如果是空的,等我得到這樣的輸出:
firststring
]
,就是這樣..再次,除非步過調試,那麼它的所有罰款和花花公子:
firststring
[secondstring]
有沒有人聽說過這樣的問題嗎?上一次我遇到這樣的奇怪問題在ASM日子回到了段對齊的時候,但我懷疑這是否是這種情況,儘管我不確定_tprintf的內部工作方式......如果沒有人,我會再試一次知道,我會假設它是因爲之前的代碼造成的錯誤。主要的問題是,這是出於任何簡單的原因嗎?或者這只是指出了程序中早期的問題,就這些。感謝您的回覆。 PS:我意識到我沒有提供足夠的代碼來完全回答問題,但問題是在調試器中是否存在這種類型的行爲的已知簡單原因(運行與切換)。斷點設置在函數級別上,我使用Visual Studio 2008的編譯器版本如下:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 80x86
Microsoft (R) Macro Assembler Version 9.00.21022.08
Microsoft (R) Incremental Linker Version 9.00.21022.08
Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
Microsoft Browse Information Maintenance Utility Version 9.00.21022
Microsoft (R) Manifest Tool version 5.2.3790.2075
它真的輸出「firststring」而不是「First Value」嗎?無論如何,我的猜測是輸出能夠正常工作,但稍後會被其他內容覆蓋。 (當您跨過第二個打印語句時,還沒有發生。)如果將輸出重定向到文件會發生什麼?所有的字符串都會在文件中結束嗎? –
這將有助於擁有一套完整的代碼。我覺得我們錯過了一些東西,而我們錯過的東西可能是關鍵部分......你描述的並不是我期望看到的,我想我已經看到了大部分可以去的東西編程錯誤... –