繁体   English   中英

C++ header 文件无扩展名

[英]C++ header files with no extension

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

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

看来您在谈论的是C ++代码存储库

该代码的作者似乎决定遵循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 ++标准库中相同的模式。 我个人的观点是,最好具有文件扩展名,即使仅能够搜索头文件也是如此。

我邮寄了OpenSceneGraph的一名开发人员(罗伯特·奥斯菲尔德)。 这是他的答案。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM