Windows 有人能解释为什么cout之后的语句会改变输出吗?
最奇怪的事情正在发生。在下面的程序中,我打印出一行。按原样,程序输出以下内容:Windows 有人能解释为什么cout之后的语句会改变输出吗?,windows,cout,Windows,Cout,最奇怪的事情正在发生。在下面的程序中,我打印出一行。按原样,程序输出以下内容: -----FOCUS-----:0x22fc80: -----FOCUS-----:0: 但是,如果我在cout之后注释掉7条语句中的任何一条,我会得到以下结果: -----FOCUS-----:0x22fc80: -----FOCUS-----:0: 我已经包括了tchar.h、windows.h、iostream和Psapi.h。我正在使用MinGW-64,编译的命令是: "C:\MinGW64\bin\
-----FOCUS-----:0x22fc80:
-----FOCUS-----:0:
但是,如果我在cout之后注释掉7条语句中的任何一条,我会得到以下结果:
-----FOCUS-----:0x22fc80:
-----FOCUS-----:0:
我已经包括了tchar.h、windows.h、iostream和Psapi.h。我正在使用MinGW-64,编译的命令是:
"C:\MinGW64\bin\g++.exe" -o MyProgram.exe MyProgram.cpp -lpsapi
该计划是:
int main()
{
HWND focusThreadWnd = GetForegroundWindow();
DWORD focusThreadID = GetWindowThreadProcessId(focusThreadWnd,0);
GUITHREADINFO focusThreadInfo;
GetGUIThreadInfo(focusThreadID, &focusThreadInfo);
HWND focus = focusThreadInfo.hwndFocus;
cout << "-----FOCUS-----:" << focus << ":" << endl;
HWND k1Focus = focusThreadWnd;
HWND k2Focus = focusThreadWnd;
HWND k3Focus = focusThreadWnd;
HWND k4Focus = focusThreadWnd;
HWND k5Focus = focusThreadWnd;
HWND k6Focus = focusThreadWnd;
HWND k7Focus = focusThreadWnd;
}
intmain()
{
HWND focusThreadWnd=GetForegroundWindow();
DWORD focusThreadID=GetWindowThreadProcessId(focusThreadWnd,0);
GUITHREADINFO focusThreadInfo;
GetGuitThreadInfo(focusThreadID和focusThreadInfo);
HWND focus=focusThreadInfo.hwndFocus;
cout我没有重现您的问题,但根据
这些额外的7个HWND影响了堆栈帧,导致cbSize被不同的值填充如果在最后7行之前刷新输出流会怎么样?@SargeBorsch:std::endl
刷新流。