为什么控制台C ++程序在Visual Studio中有不同的起始代码?

时间:2015-03-29 08:50:18

标签: c++ visual-studio-2013

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

我仍然是C ++的初学者,但我很好奇为什么你必须包含stdafx.h库以及为什么主要功能与其他IDE不同?

2 个答案:

答案 0 :(得分:3)

"stdafx.h"文件是用于预编译标头的文件。如果需要,可以删除它,直接包含所有标题,并在项目选项中关闭预编译的标题,它仍然可以使用。它会慢一些。

_tmain_TCHAR是扩展为mainchar,或wmainwchar_t的宏,具体取决于是否为Unicode已在项目选项中启用。标准C ++只有int main(int argc, char *argv[])声明,并且不支持任何采用wchar_t的表单,因此您需要特定于实现的扩展才能使其正常工作。如果需要,如果您不希望或不需要在命令行参数中使用Unicode,则可以编写int main(int argc, char *argv[])。即使使用该原型或使用int main(void),您也可以使用GetCommandLineW以宽字符形式获取命令行参数。

答案 1 :(得分:0)

这是特定于Windows的,因为Windows图形程序将其他参数传递给main函数。

_tmain而不是标准main的原因是由于构建特定于Windows的控制台程序时的Unicode设置。如果您创建没有Unicode支持的非Windows特定控制台程序,则应获得标准main函数。

"stdafx.h"将处理precomiled headers。某些Windows系统头文件非常大,解析项目中每个源文件(或更确切地说translation unit)的头文件可能会在构建时增加大量时间。通过“预编译”头文件,它们处于部分解析状态,可以更快地读取和处理编译器。