2012-04-12 12 views
3

Ich habe einige benutzerdefinierte .h-Dateien unter/usr/include, aber in einem Verzeichnis (/ usr/include/itsmag1c), und ich versuche, sie aufzunehmen in meiner C-Datei. Ich vermute, dass, weil ichWie man benutzerdefinierte .h-Dateien in/usr/include einfügt

#include "filename.h"; 

für Dateien im selben Verzeichnis, und ich würde spitze Klammern für die Aufnahme einer Datei wie math.h oder stdio.h verwenden. Habe ich recht, wenn ich rate, dass ich die spitzen Klammern für die Aufnahme meiner eigenen Header-Dateien verwende? Wenn ja, wird mein Programm nicht kompilieren, ich bekomme den Fehler, dass die enthaltenen Dateien nicht gefunden werden können. Kann jemand bitte auf mich hinweisen, wie ich diese Dateien einschließen würde, oder wäre es am besten, sie im selben Verzeichnis wie mein Programm zu haben?

Antwort

4

zwei Möglichkeiten:

  1. Verwenden #include <itsmagic1c/filename.h>

  2. Verwenden #include <filename.h> wie zuvor, aber ein -I Schalter hinzufügen.

-Boost etc Verwendung Methode 1. (die gut zur Verfügung gestellte Beiträge haben Sie Boost System Standorte installiert wie auf einer einigermaßenen Standard-Linux-Box mit angemessener Paketverwaltung).

Methode 2 ist auch in Ordnung, aber mehr Arbeit auf dem Build-System, Makefiles etc.

+0

Die erste einige Trennung zwischen Komponenten liefert, so ist es die bessere Wahl. – ergosys

+0

Wenn ich einen Ordner zu '/ usr/include /' hinzufüge, muss ich neu starten, damit 'gcc' es findet? – Mrlenny

+0

nach dem Neustart funktionierte es – Mrlenny

2

Normalerweise würden Sie Ihre eigenen Header im selben Verzeichnis oder in einem Unterverzeichnis setzen. Same-dir beinhaltet die Arbeit mit "". Für Halter enthält, wenn Sie gcc verwenden, können Sie zusätzliche umfassen passieren Verzeichnisse mit

-Irelativedir 

oder

-I/usr/local/yourpath. 
+0

Ich habe sie im Verzeichnis/usr/local, weil mehr als eines meiner Programme die .h-Dateien verwenden, und sie sind mit allen meinen Programmen verpackt, aber nur kopiert, wenn sie nicht bereits vorhanden sind. – Matthew

+0

Die Option '-I' wird von tcc, clang und icc unterstützt. Die Compiler von Microsoft verwenden '/ I'. –

Verwandte Themen