使用Visual Studio很久了,关于这个细节今天终于算弄清楚了,记录一下。
使用Visual Studio或其他IDE学习C++时,即便是最简单的hello world的控制台程序,首先也要新建一个工程,而不能直接用记事本新建个后缀为cpp的文本文件,然后一条命令(比如cc)就完成了的,那么新建工程时就有下面3种类型:
1、默认状态下
这时候默认预编译头,生成的文件结构如下:
2、取消勾选Precompiled header
完成后文件结构与之前完全相同,文件内容也相同,那么这两种类型到底有什么区别呢?
不同点在于第二种状态下,stdafx.h和stdafx.cpp是可以删除的(当然会提示类型未定义,因为删掉了#include <tchar.h>,把main函数头改为int main()即可)。默认状态下则不能删除,连接时报错。
继续深究的话,其根本原因在于这个:勾选Precompiled header时编译器认为,所有在指令#