VS2017学习过程——预编译标头

新版的VS2017在新建了一个项目之后,会自动生成如下代码

// ConsoleApplication2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include "pch.h"
#include <iostream>

int main()
{
    std::cout << "Hello World!\n"; 
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门提示: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件

这段代码中包含了一个名为pch.h的头文件,这个头文件我们用旧版的VS或者VC++6.0时根本没有见过,而且把这段代码复制到VC上运行,程序还会报错,因为VC找不到pch.h这个头文件。
如果在VS2017中删除#include"pch.h",程序会出现如下错误:
fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “pch.h””?
pch是一个在你创建项目时编译器自动生成的文件,称为预编译文件。打开pch.h,和pch.cpp,发现里面根本没有实质性的东西。

// 入门提示: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件

#ifndef PCH_H
#define PCH_H

// TODO: 添加要在此处预编译的标头

#endif //PCH_H
// pch.cpp: 与预编译标头对应的源文件;编译成功所必需的

#include "pch.h"

// 一般情况下,忽略此文件,但如果你使用的是预编译标头,请保留它。

其实这两个文件一般情况下我们是用不到的,但是当我们编写的代码中需要预处理的东西比较多时,可以把这些代码放在pch文件里。
比如说,某个程序有大量的宏定义,当然,我们在编写代码时,对常量进行宏定义是一种非常好的习惯,它有利于我们后期对代码进行维护和修改。我们可以把宏定义都放在pch.h文件里,对100进行宏定义,定义名为MAX,代码如下所示。

#ifndef PCH_H
#define PCH_H
#define MAX 100
// TODO: 添加要在此处预编译的标头

#endif //PCH_H

这时在main函数所在的.cpp文件中添加#include"pch.h",就可以使用宏定义的符号MAX了。

#include "pch.h"
#include <iostream>

int main()
{
	int i = 0;
	for (i = 0; i < MAX; i++) {
		printf("%d\n", i);
	}
}

下面再给大家举个应用pch.h的例子。当你有一个函数,你经常需要调用它,但是这个函数的功能一般不需要修改和维护,这时可以把这个函数写到pch.cpp里,并在pch.h中给出函数的声明。

//pch.h中对add函数进行声明
#ifndef PCH_H
#define PCH_H
int add(int a, int b);
//pch.cpp中写出add函数的函数体
#include "pch.h"
int add(int a, int b) {
	return a + b;
}
#include "pch.h"	//包含此头文件,就可以调用add函数了
#include <iostream>

int main()
{
	int sum;
	sum = add(3, 4);
	printf("%d", sum);
}

进行某些代码或者宏定义的预处理是可以提高程序的执行效率的,但对于编写的比较小的程序来说,这点效率的提高可能根本感觉不出来,因此直接忽略#include"pch.h"就行了,放在那儿,不去管它,其余的代码该怎么写就怎么写。
但如果我们非得想把这一行代码删除,可以参考如下步骤:
1.项目->项目属性
在这里插入图片描述
2.在属性页,依次找到配置属性——>C/C++ ——>预编译头,如图所示
在这里插入图片描述
3.确定保存之后,在原先的代码中把#include"pch.h"删除就可以了。
在这里插入图片描述
当然,我们看到add函数也无法使用了

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值