没有扩展名的C ++头文件

时间:2016-11-16 05:50:10

标签: c++ header-files file-extension

我正在使用一个开源项目(Open Scene Graph)。我发现所有头文件名都是File格式,我发现在某些网站中提到的是没有扩展名的文件

我想知道为什么这些开发人员使用此扩展程序,而不是传统的.h文件扩展名。

3 个答案:

答案 0 :(得分:5)

您似乎在谈论C ++代码的this repository

看起来该代码的作者决定遵循C ++标准库的模式。在标准C ++中,库头不应该具有.h扩展名。所以以下是正确的:

#include <iostream> 

大多数编写<iostream.h>的实现也可以,但没有扩展名的版本实际上是正确的。由于引入了命名空间,并且为标准库引入了std命名空间,C ++标准库能够在C ++ 98中删除扩展。

C ++标准既不要求也不禁止其他标题的扩展,所以它完全取决于某些软件的作者使用什么文件扩展名(如果有的话)。最常见的选择是使用.h.hpp,后者旨在区分C ++标头和C标头。

快速浏览一下OpenSceneGraph代码,可以看出他们在其包含中遵循了C ++标准库模式。没有扩展,所有内容都在osg命名空间中,类似于标准库的std命名空间。因此,使用OpenSceneGraph库与使用C ++标准库非常相似。

#include <osg/Camera> // Provides osg::Camera

它的模式与:

相同
#include <string> //Provides std::string

所以我认为OSG的作者想要遵循与C ++标准库相同的模式是安全的。我个人认为,拥有文件扩展名更好,即使只是为了能够搜索头文件。

答案 1 :(得分:0)

我邮寄给OpenSceneGraph的开发人员之一(Robert Osfield)。这是他的答案。

  

OSG采用与标准C ++标头相同的标头约定。   我们在标题中添加了一个 - -C ++ - - 字符串,以便编辑可以   用它来确定类型。

答案 2 :(得分:-1)

我所知道的是,C标准库已经采用了大多数名称。由于C ++必须与它共存,因此C ++标准库可能已经发展为没有其标题的扩展名。

请注意,这些标题中的某些标题可能具有相同的名称,但它们提供的功能可能相同或不相似。

#include<some.h> //this includes the header C library
#include<some> //this includes the header from the C++ standard library