在MFC开发中,我比较习惯使用Console输出调试信息来进行DEBUG。从VS2008到VS2012,只要在初始化时候打开Console,那么printf的输出会被定向到Console中,十分快捷,示例代码如下:
static inline void InitConsoleWindow()
{
int nCrt = 0;
FILE* fp;
AllocConsole();
nCrt = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
fp = _fdopen(nCrt, "w");
*stdout = *fp;
setvbuf(stdout, NULL, _IONBF, 0);
}
在初始化函数中调用上述函数后,再使用printf即可在Console中输出调试信息。而在我升级Visual Studio 2015后,发现printf(或是cout)无法输出到console。
解决方法是包含 conio.h 头文件,用 _cprintf 代替 printf 和 cout。但我很想知道,Visual Studio 2015中的 printf 被 retarget 到哪儿了……