使用 .h 作为 c++ 文件的标头是否错误?
我到处都能看到它,尤其是用“C 风格”编写的代码。我注意到 Emacs 总是为 .h 标头选择 C 突出显示样式,而为 hpp 或 hh 选择 c++。
标记你的标题.h实际上是“错误的”还是只是让我烦恼的事情?
编辑:
这让我很恼火有一个很好的(ish)原因,如果我有标记为“hpp & cpp”的项目文件,我可以使用“grep something *pp”等。否则我必须输入“.h cpp”
使用 .h 作为 c++ 文件的标头是否错误?
我到处都能看到它,尤其是用“C 风格”编写的代码。我注意到 Emacs 总是为 .h 标头选择 C 突出显示样式,而为 hpp 或 hh 选择 c++。
标记你的标题.h实际上是“错误的”还是只是让我烦恼的事情?
编辑:
这让我很恼火有一个很好的(ish)原因,如果我有标记为“hpp & cpp”的项目文件,我可以使用“grep something *pp”等。否则我必须输入“.h cpp”
没有错。这是 Microsoft Visual C++ 的默认设置。
只要遵循你喜欢的标准,并坚持下去。
调用 C++ 头文件 .h并没有错。没有关于您的代码必须使用哪些扩展的规则。对于非标头,MSVC 使用 .cpp,在 Linux 上也使用 .cc。没有一个全球标准,而且 .h 绝对是非常广泛使用的。
但我会说调用你的标题 .hpp(我也见过 .hh 几次)比仅使用 .h 更加一致和信息丰富。
您可以自由使用.h
, .H
, .hpp
, .hxx
, .hh
, 或 whathaveyou。就像您可以自由地使用.c
C 源代码和.C
, .cpp
, .cc
, 或.cxx
C++ 源代码一样。扩展主要是一种约定。
就像其他文件一样——.c 用于 C,.cpp 用于 C++——使用 .h 用于 C,.hpp 用于 C++。这将满足大多数编译器/编辑器。不这样做并没有错,但它可以用来提示您实际使用的两种语言中的哪一种。
如果您想在不重命名文件的情况下停止该行为,您应该查看 Emacs 配置并尝试更改源代码检测。
由于 Emacs 没有简单的方法来确定 .h 文件是 C 还是 C++,因此为 .h 文件选择 C 并为 .hpp 文件选择 C++ 并不可笑。
请注意,所有 boost 头文件都以 .hpp 为后缀。