Frage:
Warum .h-Dateien mit .cpp verwenden?
Paul
2015-04-09 15:48:48 UTC
view on stackexchange narkive permalink

In der Schule hat uns unser Lehrer immer beigebracht, .hpp (C ++ - Header-Dateien) mit unseren .cpp (C ++ - Dateien) zu verwenden. Aber Arduino scheint .h-Dateien zu verwenden (mit .cpp-Links?).


Wenn jemand in C programmiert (ohne C ++ - Compiler), hat er die Möglichkeit, über eine .cpp-Datei verlinkt zu werden eine .h-Datei?

  • Warum enthält eine CPP-Datei nicht immer eine HPP-Datei?
  • Was sind die Nachteile der Verwendung von .hpp-Dateien mit Ihren .cpp-Dateien?

Dies dient nicht dazu, eine Diskussion darüber zu beginnen, was am besten ist. Bitte geben Sie eine Antwort mit Argumenten das basiert nicht auf "was du gerne mehr machst".

Einer antworten:
Peter Bloomfield
2015-04-09 16:38:47 UTC
view on stackexchange narkive permalink

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. >

Es gibt also keinen Standard dafür? Oder gut, es definiert, dass es nicht wirklich wichtig ist, ob es ein ".hpp" oder ".h" ist ... interessant ...
Auch .cxx und .hxx. Ich habe die auch gesehen. Weil sie wie umgefallene Pluspunkte aussehen oder so.
Es spielt keine Rolle, welche Sie in den meisten Fällen verwenden, aber es gibt Konventionen. Beispielsweise haben viele Bibliotheken sowohl C- als auch C ++ - Bindungen. Sie können die C ++ - Syntax nicht in einen C-Header einfügen, da sie nicht kompiliert wird. In solchen Situationen ist es üblich, dass die Datei ".h" den C-Header und eine übereinstimmende Datei ".hpp" die C ++ - Schnittstelle enthält (die häufig die Datei ".h" enthält und diese dann in eine C ++ - freundlichere Notation einschließt )
@MarkAllen mit xx anstelle von ++ scheint Probleme mit speziellen Zeichen zu verhindern, ist einige obskure fs. Vielleicht gibt es kein wirkliches Problem, aber jemand hat beschlossen, kein Risiko einzugehen.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Lesen Sie weiter auf narkive:
Suchergebnisse für 'Warum .h-Dateien mit .cpp verwenden?' (Fragen und Antworten)
8
Antworten
Wie ist das mit den Programmiersprachen?
gestartet 2007-04-28 09:14:01 UTC
programmierung & design
Loading...