我最近有一个课程项目,我必须用G ++制作一个程序.我使用了一个makefile,由于某种原因,它偶尔会留下一个.h.gch文件.有时,这不会影响编译,但是每次都会导致编译器针对已修复或没有意义的问题发出错误.我有两个问题:
1)什么是.h.gch文件以及用于什么?和
2)为什么没有清理时会引起这样的问题?
谢谢您的帮助.
小智 104
甲.gch文件是一个预编译的头.
如果.gch未找到a,则将使用正常的头文件.
但是,如果您的项目设置为生成预编译的头文件,那么如果它们不存在则会生成它们并在下一个版本中使用它们.
有时*.h.gch会损坏或包含过时的信息,因此删除该文件并再次编译它应该修复它.
rit*_*sat 33
如果您想了解文件,只需在终端上输入即可
file filename
Run Code Online (Sandbox Code Playgroud)
file a.h.gch 得到:
GCC precompiled header (version 013) for C
Run Code Online (Sandbox Code Playgroud)
小智 15
a)它们是预编译的标题:http: //gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html
b)它们包含来自.h文件的"缓存"信息,每次更改相应的.h文件时都应更新.如果没有发生 - 您的项目中设置了错误的依赖项
tgi*_*son 13
关于gch文件是什么,其他答案是完全准确的.但是,上下文(在这种情况下,使用g ++的初学者)就是一切.在这种情况下,有两个规则:
永远不会将.h文件放在g ++编译行上.只有.cpp文件.如果偶然编译.h文件,请删除任何*.gch文件
永远不会将.cpp文件放在#include语句中.
如果规则1被破坏,那么问题中描述的问题将在某个时刻发生.如果规则2被破坏,那么链接器会在某个时候抱怨多重定义的符号.
| 归档时间: |
|
| 查看次数: |
70785 次 |
| 最近记录: |