我对预编译头的理解如下:
我们创建stdafx.h
文件:
#pragma once
#include <code1.h>
#include <code2.h>
...
#include <codeN.h>
和stdafx.cc
文件:
#include <stdafx.h>
现在,如果多个main1.c
、main2.c
、main3.c
文件中的每一个都包含stdafx.h
头,那么当您第一次编译main1.c
时,stdafx.h
包含的所有内容都将被解析并编译为对象文件,但编译下一个main2.c
和main3.c
文件将不需要再次解析stdafx.h
文件。
但是,假设我只有一个main1.c
文件,没有main2.c
或main3.c
文件。使用预编译头会比直接将codeX.h
包含到main.c
中有什么改进吗?
如果只有一个
.c
文件包含预编译头,预编译的头是否会加快编译速度?
可能是的,假设您使用的是以前预编译的标头。
它应该更快,因为预编译的头(应该(已经通过预处理器运行,影响这里代码的编译器标志也应该完成它的工作。
因此,与仍然需要做这些事情的include相比,它应该更快。