H.gch 文件是什么?

我最近做了一个类项目,我必须用 G + + 编写一个程序。

我使用了一个 makefile,由于某种原因,它偶尔会留下一个.h.gch 文件。

有时候,这并不影响编译,但是经常会导致编译器为已经修复或没有意义的问题发出错误。

我有两个问题:

1)什么是.h.gch 文件? 这个文件用来做什么

2)为什么在没有清理干净的情况下会出现这样的问题?

97435 次浏览

这是海湾合作委员会的预编译头。

维基百科有一个不错的解释,http://en.wikipedia.org/wiki/Precompiled_header

A)它们是预编译的标题: Http://gcc.gnu.org/onlinedocs/gcc/precompiled-headers.html

B)它们包含来自。H 文件,并应更新每次更改各自。H 档案。如果它没有发生-您在项目中设置了错误的依赖项

ABc0文件是一个预编译头。

如果没有找到 .gch,那么将使用普通的头文件。

但是,如果您的项目被设置为生成预编译头,那么如果它们不存在,将生成它们,并在下一个构建中使用它们。

有时 *.h.gch会被破坏或包含过时的信息,所以删除该文件并重新编译它应该修复它。

如果您想了解一个文件,只需在终端上键入

file filename

file a.h.gch给出:

GCC precompiled header (version 013) for C

关于 gch 文件是什么,其他答案是完全准确的。然而,上下文(在本例中,使用 g + + 的初学者)就是一切。在这种情况下,有两条规则:

  1. 永远,永远,永远不要。G + + 编译行上的 h 文件。只是。Cpp 文件。如果。H 文件是否偶然编译,删除任何 * 。Gch 文件

  2. 永远不要将.cpp 文件放在 # include 语句中。

如果违反了第一条规则,那么在某个时候问题中描述的问题就会出现。 如果违反了第二条规则,链接器将在某个时刻抱怨多重定义的符号。