Gegeben dieser Verzeichnisbaum:
%Vor%Das Kompilieren von file.cpp funktioniert mit VS, schlägt in gcc fehl.
Danke.
Die Groß- / Kleinschreibung hängt vom Betriebssystem ab. Windows unterscheidet nicht zwischen Groß- und Kleinschreibung. Linux ist.
BEARBEITEN:
Tatsächlich, wie von Martin York bemerkt, hängt die Groß- und Kleinschreibung vom Dateisystem ab. Standardmäßig verwendet Windows ein Dateisystem ohne Berücksichtigung von Groß- und Kleinschreibung, während Linux Groß- und Kleinschreibung berücksichtigt. Für alle, die wissen möchten, welche Dateisysteme Groß- und Kleinschreibung beachten und welche nicht, gibt es eine umfassende Liste auf Wikipedia: Vergleich von Dateinamenbeschränkungen .
Was sagt der Standard?
Die Groß- / Kleinschreibung in #include
directions wird von der Implementierung (Compiler / Präprozessor) gesteuert. Dies wird unter 16.2.2 [cpp.include] erläutert:
Eine Preprocessing-Direktive des Formulars
# include < h-char-sequence> new-line
Durchsucht eine Sequenz implementierungsdefinierter Orte nach einem Header, der durch die angegebene Sequenz zwischen den Trennzeichen<
und>
eindeutig identifiziert wird, und bewirkt, dass diese Anweisung durch den gesamten Inhalt des Headers ersetzt wird. Die Angabe der Orte oder die Identifizierung der Überschrift ist implementierungsdefiniert.
Ähnlich, 16.2.3 [cpp.include]:
Eine Preprocessing-Direktive des Formulars
# include " q-char-sequence" new-line
bewirkt die Ersetzung dieser Direktive durch den gesamten Inhalt der Quelldatei, die durch die angegebene Sequenz zwischen den"
Trennzeichen identifiziert wird. Die benannte Quelldatei wird in einer implementierungsdefinierten Weise gesucht. Wenn diese Suche nicht unterstützt wird oder die Suche fehlschlägt, wird die Anweisung erneut so verarbeitet, als ob sie
# include < h-char-sequence> new-line
mit der identischen enthaltenen Sequenz (einschließlich>
-Zeichen, falls vorhanden) aus der ursprünglichen Anweisung.
Eine natürliche Wahl für eine Implementierung der Sprache ist die Verwendung der Groß- / Kleinschreibung des Dateisystems oder Betriebssystems, aber es gibt keine strikte Anforderung (wie alle anderen Antworten nahelegen).
Was ist die beste Vorgehensweise? Behalten Sie alle Datei- / Ordnernamen in Kleinbuchstaben und machen Sie das Gleiche beim Einschließen?
Best Practice wie immer: Halten Sie die Dinge konsistent. Wenn Sie in Ihrem Projekt mixed-case-Quell- / Header-Dateien verwenden, verwenden Sie sie weiterhin und replizieren Sie das genaue Gehäuse in Ihren #include
-Direktiven.
Es ist kein C ++ - Standard, es ist der Linux-Weg, bei dem alle Pfadnamen die Groß- / Kleinschreibung beachten. Die beste Vorgehensweise ist es, den gewünschten Dateinamen (meist Kleinbuchstaben) zu wählen und den gleichen Fall in der include-Direktive zu verwenden. Verwenden Sie auch immer relative Dateipfade.
Tags und Links c++ gcc windows visual-studio linux