有人知道在执行SDL程序时如何消除stdout.txt和stderr.txt的创建

时间:2013-03-22 06:23:19

标签: c++ sdl

在SDL FAQ中有一些相关信息,但我需要的是完全消除这些文件,而不是将输出重定向到控制台。我希望程序只在有任何输出时才创建它们,尽管即使这样也没有必要。这些文件只是令人讨厌,我只是想摆脱它们。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

将两者的输出都指向NUL。

答案 1 :(得分:0)

如何使用自己的main

您可以避免使用SDL附带的main,而是提供自己的main。根据{{​​3}},您可以在包含SDL_MAIN_HANDLED之前定义一个名为SDL.h的宏,从而在SDL 1.3中完成此任务。 this mail仅更改SDL_main.h,因此您可以在本地SDL安装中修补该文件,而无需重新编译任何内容。但由于主要效果似乎是避免将main定义为预处理器宏,因此可能只需这样:

#include <SDL.h>
#undefine main
但是,未经测试。您可能必须欺骗构建系统而不使用提供main resp的库。 SDL WinMain

看作The commit for this并不是上面的代码没有将WinMain定义为宏,您可能只需要声明自己的WinMain函数而无需执行任何预处理器技巧。您可能也可能不必省略一个库,所以试试这个。

1.3

中的事态

请注意,在SDL 1.3中,您不必再担心这些文件了:它还包括SDL_main.h,其中包括

  
      
  • 从WinMain()
  • 中拉出stdio重定向   

因此,如果您愿意从源代码编译SDL,这会为您提供另一组选项:您可以从当前HG树开始使用SDL,尽管这样做可能会使您面临可能不稳定的实现。或者您可以将该单个提交移回SDL 1.2,因为与未来版本的兼容性不会因此而受到影响。