header-files

Header-Dateien werden in einigen Programmiersprachen verwendet, um Quellcode als eine einzelne Kopie zu speichern, die in mehreren Quelldateien wiederverwendet werden kann. Dieses Tag sollte für Fragen zur Verwendung von Header-Dateien verwendet werden. Ein Tag für die Programmiersprache wie C, C ++, PHP oder Ruby sollte zusammen mit diesem Tag verwendet werden, da die Verwendung der Header-Datei zwischen Programmiersprachen variieren kann. Dieses Tag wird normalerweise nicht mit der Java- oder Go-Programmierung und der Import-Anweisung verwendet.
1
Antwort

XCode 4 Relative # Pfade in der Suche einschließen?

Ich versuche, ein Projekt, das ich ursprünglich in Windows geschrieben habe, auf OS X zu portieren, und habe Schwierigkeiten mit den Header-Suchpfaden. Ich habe Benutzersuchpfade verwendet, um nach Quellordner "project/src/core/" einzubezi...
13.04.2011, 03:08
2
Antworten

Warum unterbricht das Inlining meiner Accessoren meinen Code?

Ich habe ein merkwürdiges Problem, bei dem der Versuch, inline der Accessoren für meine "Person" -Klasse auszuführen, dazu führt, dass der Code nicht kompiliert werden kann. Der folgende Code wird erfolgreich kompiliert und ausgeführt (Usi...
25.11.2015, 16:27
3
Antworten

Warum findet Qt Creator keine Header in den eingeschlossenen Pfaden - obwohl qmake sie finden kann

Ich habe mich einem bereits bestehenden (opensource-) Qt 4-Projekt angeschlossen, um einige Funktionen hinzuzufügen. Das Projekt kompiliert und läuft perfekt auf Linux Slackware mit Qt 4.8.5. Als IDE habe ich zuerst KDevelop verwendet (kommt mit...
20.12.2013, 10:44
2
Antworten

einschließlich externer Header, die Compileroptionen ermitteln

Sprich ich finde eine sehr nette Open Source Bibliothek im Internet und jetzt möchte ich sie für mein eigenes Projekt verwenden. Ich lade es herunter, kompiliere es möglicherweise und erhalte die Header-Dateien & amp; die statische / dynamisc...
26.08.2012, 19:49
5
Antworten

Wie definiert man ein Array von Zeichenfolgen in der Header-Datei?

Ich habe viele verschiedene 3-Achsen-Sensoren, für die ich Testcode schreibe. In den C-Dateien für jede von ihnen habe ich die gleiche Zeichenkette definiert: %Vor% was ich benutze, wenn ich "für" Schleife Ergebnisse zum Drucken der Achse, d...
08.02.2012, 15:56
4
Antworten

Wie fügt man Header-Dateien in Visual Studio 2008 ein?

Ich versuche gerade, ein einfaches Programm zu kompilieren, das zwei Header-Dateien enthält. Ich sehe sie im Solution Explorer, wo ich sie über "include existing files" eingefügt habe. Wenn ich jedoch mein Programm starte, wird der folgende Fehl...
15.01.2011, 21:39
3
Antworten

Einen Typdef in C ++ aufheben?

Ich arbeite an einem riesigen Projekt mit einer Datei A.h, deren Code eine Zeile hat %Vor% Auch da ich auf Linux aufbaue und die dlinfo-Funktion verwende, muss ich die link.h-Datei in mein Projekt einfügen. Und hier entsteht ein Konflikt, we...
12.12.2014, 01:43
5
Antworten

___ answer30817617 ___

Ihr Fall scheint ein Grenzfall zu sein, aber eine Include-Datei kann als eine Art Vertrag zwischen dieser Quelldatei und anderen Quelldateien angesehen werden, die diese Funktionen benötigen.

Indem Sie den "Vertrag" in eine Header-Datei schreiben, können Sie sicherstellen, dass die anderen Quelldateien wissen, wie diese Funktionen aufgerufen werden, oder Sie werden vielmehr sicher sein, dass der Compiler eingefügt wird der richtige Code und überprüfen Sie seine Gültigkeit zum Zeitpunkt der Kompilierung.

Was aber, wenn Sie dann (versehentlich) den Funktionsprototyp in der entsprechenden Quelldatei geändert haben?

Indem Sie in diese Datei den gleichen Header wie alle anderen einfügen, werden Sie bei der Kompilierung gewarnt, sollte eine Änderung versehentlich den Vertrag "brechen".

Update (aus @ tmlens Kommentar): Auch wenn dies nicht der Fall ist, kann eine Include-Datei auch Deklarationen und Pragmas wie #defines, typedef, enum, struct und inline verwenden als Compiler-Makros würde es keinen Sinn machen, mehr als einmal zu schreiben (eigentlich wäre das gefährlich an zwei verschiedenen Stellen zu schreiben, damit die Kopien nicht mit schlechten Ergebnissen zusammenfallen). Einige davon (z. B. ein Pragma-Struktur-Pragma ) könnten zu schwer zu erkennenden Fehlern werden.

    
___ answer30819602 ___

Dies ist nützlich, weil Funktionen deklariert werden können, bevor sie definiert werden.

So kommt es, dass Sie die Deklaration haben, gefolgt von einem Aufruf \ Aufruf, gefolgt von der Implementierung. Das musst du nicht, aber du kannst es.

Die Header-Datei enthält die Deklarationen. Sie können jederzeit aufrufen, solange der Prototyp übereinstimmt. Und solange der Compiler vor dem Kompilieren eine Implementierung findet.

    
___ qstntxt ___

Ich verstehe, dass wenn eine Quelldatei Funktionen aus einer anderen Datei referenzieren muss, sie ihre Header-Datei enthalten muss, aber ich verstehe nicht, warum die Quelldatei eine eigene Header-Datei enthält. Der Inhalt in der Header-Datei wird einfach kopiert und als Funktionsdeklaration in die Quelldatei eingefügt. Für Quelldatei, die eine eigene Header-Datei, eine solche "Deklaration" scheint mir nicht notwendig, in der Tat, Projekt noch kompilieren und verknüpfen kein Problem nach dem Entfernen der Header aus der Quelldatei, so was ist der Grund für die Quelldatei gehören eigene Kopfzeile?

    
___ answer30817652 ___

Der Hauptvorteil besteht darin, dass der Compiler die Konsistenz Ihrer Kopfzeile und ihrer Implementierung überprüft. Sie tun es, weil es bequem ist, nicht weil es erforderlich ist. Es kann durchaus möglich sein, das Projekt ohne diese Einbeziehung korrekt kompilieren und ausführen zu lassen, aber es kompliziert die Wartung Ihres Projekts auf lange Sicht.

Wenn Ihre Datei keine eigene Kopfzeile enthält, können Sie versehentlich in eine Situation geraten, in der die Vorwärtsdeklaration einer Funktion nicht mit der Definition der Funktion übereinstimmt - vielleicht weil Sie einen Parameter hinzugefügt oder entfernt haben und vergessen haben, die Kopfzeile zu aktualisieren . Wenn dies geschieht, würde der Code, der auf der Funktion mit Nichtübereinstimmung beruht, noch kompilieren, aber der Aufruf würde zu undefiniertem Verhalten führen. Es ist viel besser, wenn der Compiler diesen Fehler findet, was automatisch geschieht, wenn Ihre Quelldatei eine eigene Kopfzeile enthält.

    
___ tag123headerfiles ___ Header-Dateien werden in einigen Programmiersprachen verwendet, um Quellcode als eine einzelne Kopie zu speichern, die in mehreren Quelldateien wiederverwendet werden kann. Dieses Tag sollte für Fragen zur Verwendung von Header-Dateien verwendet werden. Ein Tag für die Programmiersprache wie C, C ++, PHP oder Ruby sollte zusammen mit diesem Tag verwendet werden, da die Verwendung der Header-Datei zwischen Programmiersprachen variieren kann. Dieses Tag wird normalerweise nicht mit der Java- oder Go-Programmierung und der Import-Anweisung verwendet. ___ tag123c ___ C ist eine universelle Computerprogrammiersprache, die für Betriebssysteme, Bibliotheken, Spiele und andere Hochleistungsanwendungen verwendet wird. Dieses Tag sollte bei allgemeinen Fragen zur C-Sprache verwendet werden, wie in der Norm ISO 9899: 2011 definiert. Fügen Sie ggf. ein versionsspezifisches Tag wie c99 oder c90 für Fragen zu älteren Sprachstandards hinzu. C unterscheidet sich von C ++ und es sollte nicht mit dem C ++ - Tag kombiniert werden, wenn ein rationaler Grund fehlt. ___ answer30822348 ___

Praktisches Beispiel - gehen Sie von folgenden Dateien in einem Projekt aus:

%Vor%

Beachten Sie, dass die Deklaration in %code% nicht mit der Definition in %code% übereinstimmt; Die Rückgabetypen sind unterschiedlich. %code% ruft die Funktion %code% auf, vorausgesetzt, sie gibt eine %code% gemäß der Deklaration in %code% zurück.

%code% und %code% werden getrennt voneinander kompiliert. Da %code% %code% wie in %code% deklariert, kompiliert es erfolgreich. Da %code% nicht %code% enthält, ist dem Compiler der Typkonflikt zwischen der Deklaration und der Definition nicht bekannt, so dass er ebenfalls erfolgreich kompiliert wird.

Wenn Sie die beiden Objektdateien miteinander verknüpfen, stimmt der Maschinencode für den Funktionsaufruf nicht mit dem überein, was der Maschinencode für die Funktionsdefinition erwartet. Der Funktionsaufruf erwartet, dass ein %code% -Wert zurückgegeben wird, aber die Funktionsdefinition gibt %code% zurück. Dies ist ein Problem, insbesondere wenn die beiden Typen nicht die gleiche Größe haben. Im besten Fall erhalten Sie ein Müll-Ergebnis.

Wenn Sie %code% in %code% einfügen, kann der Compiler diese Abweichung erkennen, bevor Sie Ihr Programm ausführen.

Und, wie in einer früheren Antwort darauf hingewiesen wird, wenn %code% irgendwelche Typen oder Konstanten definiert, die von %code% verwendet werden, dann müssen Sie sie definitiv einbeziehen.

    
___ tag123declaration ___ Deklaration ist der Teil des Unterprogramms (Prozedur oder Funktion), der das Protokoll (Header) liefert, aber nicht den Rumpf des Unterprogramms. ___ answer30817605 ___

Die Header-Datei sagt den Leuten, was die Quelldatei tun kann.

Also muss die Quelldatei für die Headerdatei ihre Verpflichtungen kennen. Deshalb ist es enthalten.

    
___

Ich verstehe, dass wenn eine Quelldatei Funktionen aus einer anderen Datei referenzieren muss, sie ihre Header-Datei enthalten muss, aber ich verstehe nicht, warum die Quelldatei eine eigene Header-Datei enthält. Der Inhalt in der Header-Datei w...
13.06.2015, 10:23
7
Antworten

CPP | .h-Dateien (C ++)

Ich habe mich nur gefragt, was der Unterschied zwischen .cpp und .h Dateien ist? Wofür würde ich eine Header-Datei (.h) verwenden und wofür würde ich eine cpp-Datei verwenden?     
02.01.2010, 00:28
4
Antworten

Unterschied zwischen Einschließen und Importieren [Duplizieren]

Was ist der Unterschied zwischen ? %Vor%     
06.11.2012, 11:40