Urs*_*nut 5 c++ precompiled-headers
我有两个关于 C++ 预编译头功能的问题。
1.当您创建 .gch 文件(使用 GCC)时实际上发生了什么,它包含什么?
2.为什么这些文件的大小如此之大,但最终的可执行文件却如此之小。
当您预编译标头时,一切都像通常的编译一样开始:
通常,这是在.cpp文件上完成的,然后继续实际编译 AST 并生成可执行代码。但是,标头预编译会在此停止,编译器会将 AST 转储到文件内.gch。
在进一步使用此预编译头时,编译器可以直接从文件加载 AST 并从那里获取它,从而跳过上面列出的昂贵处理。
该.gch文件很大,因为它包含原始标头中隐含的大量信息。但它与最终可执行文件的大小无关——使用和不使用预编译头进行编译应该产生完全相同的结果。