关于更新 C++ header 文件
About updating C++ header files
这个问题是关于在使用 C++ 一年多之后我无法解决或找不到任何解决方案的问题。
我习惯于在 C 中为 header 和代码使用单独的文件,但我在 C++ 上遇到问题:每当我编辑 header 文件并尝试编译代码时再次使用它,编译器不会注意到 header.
上的变化
我解决这个问题的方法是 "compiling" header (.hpp)。有时我只是将它与其余代码一起添加到 g++ 的源文件列表中,但随后发生的情况是我必须执行该命令两次(第一次它给我错误,但第二次没有)。它还警告我正在主文件中使用 "pragma once" 选项。
我知道这是非常错误的,所以我一直在寻找正确的方法来做到这一点,但没有成功。我注意到 g++ 生成“.gch”文件,但我真的不知道它们的用途是什么,尽管它们可能是相关的。
我怀疑问题出在“.hpp”中的代码。我知道(我认为)这样做的好方法是只在 header 中定义原型并将方法的 body 写在一个单独的文件中,但有时(特别是在使用模板时)这个产生更多问题。
.gch 是预编译的 header,如果您显式编译 header 文件,就会创建它。
然后编译器将使用该文件而不是实际的 header(编译器不关心修改时间戳)。
执行 rm *.gch
并永远将所有 header 保留在编译命令之外。
(并且不要将模板实现放在 .cpp 文件中。)
这个问题是关于在使用 C++ 一年多之后我无法解决或找不到任何解决方案的问题。
我习惯于在 C 中为 header 和代码使用单独的文件,但我在 C++ 上遇到问题:每当我编辑 header 文件并尝试编译代码时再次使用它,编译器不会注意到 header.
上的变化我解决这个问题的方法是 "compiling" header (.hpp)。有时我只是将它与其余代码一起添加到 g++ 的源文件列表中,但随后发生的情况是我必须执行该命令两次(第一次它给我错误,但第二次没有)。它还警告我正在主文件中使用 "pragma once" 选项。
我知道这是非常错误的,所以我一直在寻找正确的方法来做到这一点,但没有成功。我注意到 g++ 生成“.gch”文件,但我真的不知道它们的用途是什么,尽管它们可能是相关的。
我怀疑问题出在“.hpp”中的代码。我知道(我认为)这样做的好方法是只在 header 中定义原型并将方法的 body 写在一个单独的文件中,但有时(特别是在使用模板时)这个产生更多问题。
.gch 是预编译的 header,如果您显式编译 header 文件,就会创建它。
然后编译器将使用该文件而不是实际的 header(编译器不关心修改时间戳)。
执行 rm *.gch
并永远将所有 header 保留在编译命令之外。
(并且不要将模板实现放在 .cpp 文件中。)