.h文件的意义是什么?

Laz*_*zer 7 c c++ header-files

我知道.h文件应该有:

  • 类声明,
  • 功能原型,
  • 和外部变量(用于全局变量)

但将它作为.h文件有一些意义吗?我尝试将我的.h文件重命名为.c文件,它仍然有效.

We can name our file to be anything, but we choose to name it as a .h file.

我对么?

Kor*_*icz 13

虽然确切的命名是一种约定,但是头文件和源文件的处理之间的区别不是 - 头文件不会编译到目标文件中,而是包含在源文件中(共同形成翻译单元).此外,它们可能包含在多个源文件中,因此多个源文件共享相同的定义.文件的语义可能相同,但编译器因其用法而对它们的处理方式不同.

至于命名推移,我个人已经看到至少这些- ,*.h(*.H啊)*.hpp,*.hxx,*.hh,*.inl(正常头,不只是内联代码-呸).通常伴随着匹配的对象文件扩展名.

请注意,标准库头没有扩展名 - 例如字符串.

所以这都是品味和惯例的问题 - 你将会#include包括什么.


小智 11

使用.h命名头文件只是一种约定.您还将看到(可能在类Unix平台上):

  • .hpp(Boost库使用这些)
  • .hxx(看起来像带有+标志的h ++倾斜 - 可爱,对吧?)
  • .H(Unix区分大小写,因此您可以将它们与.h文件区分开来)

就个人而言,我强烈建议坚持.h.特别是,不要使用.H,否则如果您需要移植到不区分大小写的文件系统,您将处于痛苦的世界.


Pau*_*l R 5

这只是一个惯例 - "h"代表"标题".像大多数公约一样,你需要有一个很好的理由来反对它.