Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 预编译头是递归的吗?_C++_C_Visual Studio_Visual C++ - Fatal编程技术网

C++ 预编译头是递归的吗?

C++ 预编译头是递归的吗?,c++,c,visual-studio,visual-c++,C++,C,Visual Studio,Visual C++,让我们假设用于创建预编译头的my.h文件如下所示: stdafx.h 。。“A.h”包括一堆其他标题: A.h 是否还会为“B.h”和“C.h”生成预编译头文件(以及这两个文件包含的头文件,依此类推……),还是我必须在我的“stdafx.h”中也包含“B.h”和“C.h”?是的,预编译状态将包含B和C 预编译的工作原理是,将编译器运行到stdafx.h的末尾,并将其状态转储到磁盘,然后在编译每个源文件的主体之前恢复该状态。编译器在编译stdafx.h时看到的所有内容都会进入该状态 (换句话说:编

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

stdafx.h

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

A.h


是否还会为“B.h”和“C.h”生成预编译头文件(以及这两个文件包含的头文件,依此类推……),还是我必须在我的“stdafx.h”中也包含“B.h”和“C.h”?

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

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


(换句话说:编译stdafx.h的过程是完全相同的,不管您是生成预编译状态还是只是“正常”编译源文件——只是在预编译情况下,编译器会在文件末尾停止。即使它想对B和C做任何不同的处理,它也不能对B和C做任何处理。)

它将被生成,但如果您正在使用这些文件中声明的任何内容,则最好在stdafx.h中同时包含B.h和C.h,即使它们已经包含在a中。h@JovanMalinovic:为什么?当然,如果包含A并依赖于包含B和C是很自然的,那么在预编译头的情况下也是很自然的。有什么不同?
#include "A.h" //an external library
#include "B.h" //other headers from an external library included by "A.h"
#include "C.h"
//...