簡體   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