0

わかりました、これを単純に保ち、必要がなければ (まだ) すべてのコードを含めません。私の内なる感覚は、おそらくこれには簡単な答えがあると教えてくれますが、いつものようにそれを見落としていました. 経験の浅い人は、コンパイラが問題だと言うかもしれませんが、99.999% の確率でそれが常に何らかの形で私の側のエラーであるとは知りませんでした... ここに質問があります。私はプログラムを持っています。このプログラムは2つの文字列を出力することになっていますが、派手なものは何もありません

TCHAR* firststring = _T("FirstValue");
TCHAR* secondstring = _T("SecondValue");

_tprintf(_T("%s\n"),firststring);
_tprintf(_T("%s\n"),secondstring);

どの出力..

firststring

私のコードの特定のセクションでは、これは機能しません(他の場所で機能します)ステップオーバーデバッグをしていない限り...それなら問題ありません...

firststring
secondstring

これを行うことで、操作を1つに結合しようとさえしました:

_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
4

1 に答える 1