好的,如果我不需要,我将保持这个简单并且不包括所有代码(还)。我的内在感觉告诉我,这可能有一个简单的答案,而我像往常一样忽略了它。更有经验的人可能会说编译器是问题所在,但我从来不知道在 99.999% 的情况下,它在某种程度上一直是我的错误,所以......这就是问题所在。我有一个程序,这个程序应该输出两个字符串,没什么花哨的
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