预编译头是递归的吗?

时间:2015-05-01 09:56:51

标签: c++ c visual-studio visual-c++

让我们假装我的.h文件创建预编译头文件如下所示:

stdafx.h中

#include "A.h" //an external library

..和“A.h”包括一堆其他标题:

A.H

#include "B.h" //other headers from an external library included by "A.h"
#include "C.h"
//...

也会为“Bh”和“Ch”生成预编译的头文件(以及这两个文件包含的头文件,等等......),或者我是否必须包含“Bh”和“Ch”我的“stdafx.h”也是?

1 个答案:

答案 0 :(得分:3)

是的,预编译状态将包括B和C.

预编译的工作原理是将编译器运行到stdafx.h的末尾并将其状态转储到磁盘,然后在编译每个源文件的主体之前恢复该状态。编译stdafx.h时编译器看到的所有内容都会进入该状态。

(换句话说:编译stdafx.h的过程完全相同,无论你是否正在生成预编译状态或只是编译源文件"通常" - 它&#39 ;只是在预编译的情况下,编译器在文件的末尾停止。即使它想要,它也不能以不同的方式处理B和C.)