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

C++ C++;没有扩展名的头文件,c++,header-files,file-extension,C++,Header Files,File Extension,我正在使用一个开源项目(开放场景图)。我发现所有的头文件名都是文件格式,我发现它是一些网站中提到的没有扩展名的文件 我想知道为什么那些开发人员使用这个扩展名,而不是传统的.h文件扩展名。我知道的是,大多数名称已经被C标准库使用了。由于C++必须与之共存,所以C++标准库可能已经演变为没有对其标头的扩展。 请注意,这些标题中的某些标题可能具有相同的名称,但它们提供的功能可能相似,也可能不相似 #include<some.h> //this includes the header C l

我正在使用一个开源项目(开放场景图)。我发现所有的头文件名都是
文件
格式,我发现它是一些网站中提到的没有扩展名的文件


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

我知道的是,大多数名称已经被C标准库使用了。由于C++必须与之共存,所以C++标准库可能已经演变为没有对其标头的扩展。 请注意,这些标题中的某些标题可能具有相同的名称,但它们提供的功能可能相似,也可能不相似

#include<some.h> //this includes the header C library
#include<some> //this includes the header from the C++ standard library
#include//这包括头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
#include//这包括头C库
包含/ /这包括来自C++标准库的标头

<代码> > p>你似乎在谈论C++代码。< /P> <>看起来,该代码的作者决定遵循C++标准库的模式。在标准C++中,库头不应该有<代码> .h /代码>扩展名。因此,以下是正确的:

#include <iostream> 
它的模式与:

#include <string> //Provides std::string
#include//提供std::string

<> P> >我想可以肯定地说OSG的作者希望遵循与C++标准库相同的模式。我个人的观点是,最好是有一个文件扩展名,即使只能搜索头文件。

看起来你是在谈论C++代码。 <>看起来,该代码的作者决定遵循C++标准库的模式。在标准C++中,库头不应该有<代码> .h /代码>扩展名。因此,以下是正确的:

#include <iostream> 
它的模式与:

#include <string> //Provides std::string
#include//提供std::string

<> P> >我想可以肯定地说OSG的作者希望遵循与C++标准库相同的模式。我个人的意见是,最好有一个文件扩展名,即使只是为了能够搜索头文件。

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

OSG采用与标准C++头相同的头约定。 我们在标题中添加了一个--C++--字符串,这样编辑器就可以 使用此选项确定类型


我给OpenSceneGraph的开发者之一(Robert Osfield)发了邮件。这是他的答案

OSG采用与标准C++头相同的头约定。 我们在标题中添加了一个--C++--字符串,这样编辑器就可以 使用此选项确定类型


可能重复我投票以主题外的方式结束此问题,因为标准允许不同的标题名称,并且不太可能有任何开发人员选择一种样式而不是另一种样式。可能重复我投票以主题外的方式结束此问题,因为标准允许不同的标题名称,而且不太可能这是为什么任何一个开发人员选择一种样式而不是另一种样式的原因。实际上,在大多数现代实现中,除了MSVC之外,不支持
。在其他编译器中试试,你会发现一些错误名称空间与头名称无关。@PeteBecker当然不是直接的,但是当名称空间出现在C++98中时,迁移到无扩展名文件不是已经完成了吗?当时的一些实现维护了提供名称空间之外符号的
.h
版本,比如
iostream.h
提供了一个全局
cout
,而不是
std::cout
。很多事情几乎同时发生,导致了C++98标准。“由于引入了名称空间,所以能够删除扩展”充其量只是倒退。Cfront提供了iostream.h,其名称现在称为全局名称空间。当标准库被放入 STD时,出现了向后兼容性问题,明显的方法是从<代码> IoSurviv.H/COM>到别的东西,我们决定,非常随意地使用没有扩展名的.@ VaddadiKartick——第一个C++标准是在1998发布的。它有名称空间。它有
。它没有
。实际上,在大多数现代实现中,除了MSVC之外,它不支持
。在其他编译器中试试,你会发现一些错误名称空间与头名称无关。@PeteBecker当然不是直接的,但是当名称空间出现在C++98中时,迁移到无扩展名文件不是已经完成了吗?当时的一些实现维护了提供名称空间之外符号的
.h
版本,比如
iostream.h
提供了一个全局
cout
,而不是
std::cout
。很多事情几乎同时发生,导致了C++98标准。“由于引入了名称空间,所以能够删除扩展”充其量只是倒退。Cfront提供了iostream.h,其名称现在称为全局名称空间。当标准库被放入 STD时,出现了向后兼容性问题,明显的方法是从<代码> IoSurviv.H/COM>到别的东西,我们决定,非常随意地使用没有扩展名的.@ VaddadiKartick——第一个C++标准是在1998发布的。它有名称空间。它有
。它没有
。错误。在C++中包含C标准库使用<代码> c>代码>,例如<代码> <代码>,<代码> <代码> @ LuVuxnHPH C,这是不正确的。CSTDIO是C++类库的C++等价物