17

我试图在我的 Visual C++ 项目中使用“printf”,但它不起作用。使用 Lazy Foo 的教程,我在我的项目中设置了 SDL,但是当我玩它时, printf 没有做任何事情。

#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).

就是这样。有什么问题?

4

8 回答 8

18

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

于 2012-12-08T11:59:39.173 回答
10

SDL 默认将标准输出重定向到一个文件,stdout.txt. 您应该在程序的工作目录中找到它。

于 2012-06-17T09:14:27.373 回答
7

一切正常,我什至在屏幕上显示了一个图像,但是如果没有输出消息,我就无法编程

我认为这意味着您有一个可用的窗口,而不是控制台。

如果要将某些内容记录到输出窗口,请使用OutputDebugString

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

void WINAPI OutputDebugString(
  __in_opt  LPCTSTR lpOutputString
);

标题 WinBase.h(包括Windows.h

于 2012-06-17T03:49:24.407 回答
7

Linker -> System项目的属性中,检查 SubSystem 是否为 "Console (/SUBSYSTEM:CONSOLE)".

这会导致在您运行程序时弹出一个单独的控制台窗口。如果您当前的入口点不是主要的,那么如果您这样做,则需要将其更改为该入口点。

于 2013-12-19T01:24:42.073 回答
5

尝试定义 NO_STDIO_REDIRECT。

#define NO_STDIO_REDIRECT

如果这不起作用,请尝试此链接中的解决方案:如何获取控制台输出而不是 stdout.txt 和 stderr.txt?.

于 2012-06-18T13:13:23.073 回答
4

Printf 通常需要换行符来更新控制台。在末尾添加一个 '\n' 字符并重新运行程序。

于 2012-06-17T03:00:57.643 回答
1

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

您可以做以下三件事之一 -
在 return 语句处设置断点。
在 return 语句之前放置一个 getchar() 语句。
通过按 Ctrl+F5 而不是 F5 来运行程序。

以上所有将导致控制台窗口保留在屏幕上。

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

于 2012-06-17T02:54:45.903 回答
-3

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

于 2012-06-17T07:03:13.370 回答