默认情况下,为什么MS Visual Studio #include <stdio.h>在stdafx.h中?

时间:2017-10-31 15:58:32

标签: c++ visual-studio visual-c++ stdafx.h

MS Visual Studio 2017,来自VisualC ++类别的新Windows控制台应用程序项目。默认的stdafx.h标头包含以下行:

#include <stdio.h>
#include <tchar.h>

在他们之下:

// TODO: reference additional headers your program requires here

因为此评论位于#include <stdio.h>以下,所以我倾向于认为默认情况下包含stdio.h并不是为了方便那些可能会#include的用户,但是出于某种原因需要吗?包含stdio.h而非cstdio的事实似乎只支持这种解释吗?

我对吗?我可以安全地删除#include <stdio.h>吗?我问,因为main函数的第一行是:

std::ios_base::sync_with_stdio(false);

如果正在使用来自stdio的设施,这显然是不正确的,因为包含此标头会提示。

1)我可以安全地删除#include <stdio.h>中显示stdafx.h的行吗?

2)我可以安全地拨打std::ios_base::sync_with_stdio(false)吗?

3)默认情况下,tchar.h是否也包含在这里这一事实是什么?

2 个答案:

答案 0 :(得分:5)

是的,你可以删除它。

您甚至可以将预编译头命名为stdafx.h,或者根本禁用经过编译的头。

开始时只是方便和示例。

答案 1 :(得分:0)

如果您想使用它,由您决定,但在删除之前请阅读此MSDN about precompiled Header Files

希望这有帮助!