2012-06-17 43 views
8

我想在我的Visual C++项目中使用“printf”,但它不工作。使用Lazy Foo的教程,我在我的项目中设置了SDL,但是当我播放它时,printf并没有做任何事情。Printf不打印任何内容以输出? C++ SDL

#include "SDL.h" 
#include <stdio.h> 

int main(int argc, char* args[]) { 
    printf("Testing"); 
    return 0; 
} 

输出看起来是这样的:

The program '[4664] SDL Testing.exe: Native' has exited with code 0 (0x0). 

而且仅此而已。什么可能是错的?

+0

通常'0'表示成功。尝试采取任何输入(或)在返回语句中保留一个断点。 – Mahesh

+0

@Mahesh我在使用printf的时候尝试过放置断点,仍然没有输出。 :( – Qasim

+0

Visual Studio中的输出窗口!= stdout或stderr。 –

回答

8

SDL默认将stdout重定向到文件stdout.txt。你应该在程序的工作目录中找到它。

+0

谢谢。此文件是在Visual C++项目Debug文件夹中创建的,其中包含我调用的所有“std :: cout”函数。 – Qasim

1

您可能没有看到输出,因为您正在Visual Studio中通过按F5运行程序,并在程序退出后关闭控制台窗口。

您可以执行3件事之一 -
在return语句中放置一个断点。
在return语句之前放置一个getchar()语句。
按Ctrl + F5而不是F5运行该程序。

以上所有情况都会导致控制台窗口保留在屏幕上。

您也可以直接从命令提示符(cmd.exe)运行EXE。

+1

在return语句中放置一个断点,我不知道在哪里查找控制台。 按Ctrl + F5时,输出视图保持空白,但是当我使用F5时,输出显示构建日志和调试日志,其中包含以下内容:http://pastebin.com/UKWpCKsD 所有PDB错误都会播放在这个角色? – Qasim

+0

您看到的PDB错误并不重要。检查printf的返回值。它返回已经打印的字符数。 printf在单独的控制台窗口中输出字符,而不是在输出视图中输出。 – Superman

+0

如何访问单独的控制台窗口? – Qasim

2

printf通常需要一个换行符来更新控制台。最后添加一个'\ n'字符并重新运行该程序。

+0

可悲的是,仍然没有输出!我想知道可能是什么原因造成的。非常荒谬。 – Qasim

+0

如果您要删除SDL,printf会正常工作吗? –

+0

仍然不起作用。 – Qasim

5

一切正常,我甚至已经显示的图像在屏幕上,但我不能程序,而无需好歹输出消息

我想这意味着你必须提供给您一个窗口,而不是一个安慰。

如果你想记录的东西到输出窗口,使用OutputDebugString

发送字符串到调试器进行显示。

void WINAPI OutputDebugString(
    __in_opt LPCTSTR lpOutputString 
); 

WinBase.h(包括Windows.h

-2

有当您运行/调试程序的Visual Studio的输出窗口。您应该能够在该窗口中看到输出。

12

调出项目属性,转到链接器 - >系统 - >子系统并将其更改为第三个选项CONSOLE。这应该这样做

7

Linker -> System在您的项目的属性,检查子系统是 "Console (/SUBSYSTEM:CONSOLE)"

这会导致在运行程序时出现单独的控制台窗口。如果你当前的入口点不是主要的,那么如果你这样做,你需要改变它。