Die Erweiterung, die Sie für eine Header-Datei verwenden, spielt technisch keine Rolle, da der Compiler sie nie sieht. Sie könnten es mit der Erweiterung .this-is-a-header-file
benennen und es würde wahrscheinlich immer noch funktionieren.
Der Compiler verarbeitet normalerweise nur die C / C ++ - Quelldateien benannt .c
und .cpp
. Bevor dies jedoch geschieht, geht der Präprozessor durch und sucht nach #include
-Zeilen. Wenn es eine sieht, kopiert es im Grunde den gesamten Inhalt der enthaltenen Datei in die Quelldatei, bevor sie kompiliert wird.
Dies wird normalerweise verwendet, um Header-Dateien einzuschließen. Der Präprozessor kennt oder kümmert sich jedoch nicht um verschiedene Programmiersprachen. Es wird lediglich der Rohtext verarbeitet, sodass Sie nichts daran hindert, eine beliebige Textdatei mit einem beliebigen Namen oder einer beliebigen Erweiterung einzuschließen.
Wählen Sie die Verwendung von .h
oder .hpp
ist meist nur eine persönliche Präferenz. Sie könnten sicherlich argumentieren, dass Sie damit (als Programmierer) leichter zwischen C / C ++ - Code unterscheiden können.
Der Grund, warum .h
häufiger vorkommt, ist wahrscheinlich, dass C. und C ++ - Code wird so frei gemischt. Sie können C-Code im Allgemeinen problemlos als C ++ kompilieren. In diesem Fall ist es der Kontext (und nicht die Datei selbst), der Ihnen sagt, ob es sich um C oder C ++ handelt. Es ist auch möglich, eine Bibliothek in C ++ zu schreiben, die nur eine C-Schnittstelle verfügbar macht, was bedeutet, dass sie von C-Programmen verwendet werden kann.
Sie könnten definitiv versehentlich eine C ++ - spezifische Header-Datei in ein C-Programm aufnehmen. Alles, was passieren würde, wäre, dass der Compiler den Inhalt dieser Header-Datei nicht verstehen würde. Sinnvolle Entwicklungsumgebungen sind nicht mit einem Projekt / einer Bibliothek verknüpft, wenn eine #include
-Anweisung angezeigt wird (soweit ich weiß, ist die Arduino-IDE die einzige, die dies tut). P. >