2013-10-22 6 views
10
?

Ich schaue durch einige proprietäre Quellcode: Beispielprogramme in der Verwendung einer Bibliothek.Warum enden C-Dateien in/* [] */

Der Code ist in C und C++ geschrieben, mit make für Build-System.

Jede Datei endet in einem auskommentierten []: /*[]*/ für Quelldateien und #[]# für Makefiles. Was könnte der Grund dafür sein?

Der Code ist für ARM mit GCC kompiliert, mit Erweiterungen.

+0

Das wäre wahrscheinlich für 'vi'. – Rohan

+3

Ich werde das nicht als Codierungsstil bezeichnen, und ich würde annehmen, dass es kein Standard-C ist. Zeilen, die mit '#' beginnen, sind oft Präprozessordirektiven, und '[] #' ist kein Standard. Sind Sie sicher, dass '# [] #' wirklich die letzte Zeile jeder Datei ist? –

+1

Meine Vermutung ist, dass das Makefile-System diese Zeilen irgendwo verwendet. Wenn der Code alt genug C-Code ist, konnte es nicht unbedingt auf // Kommentare zählen, so # wäre eine Möglichkeit, eine einzelne Zeile von Nicht-Code hinzuzufügen, und der Precompiler würde es herausfiltern. Vielleicht ist es für den Aufbau eines Abhängigkeitsbaums oder etwas? Mein Verdacht wäre, durch das Makefile zu schauen. –

Antwort

6

Es ist höchstwahrscheinlich ein Platzhalter für eine Art automatische Erweiterung.

Normalerweise würde etwas wie macodef (oder einer der Quellcode-Steuerfilter) solche Elemente erweitern, um relevanten Text zu enthalten. Da in der Regel nur die mit Kommentaren geschützten Klammern erweitert werden, bleiben die Kommentare erhalten und schützen den Quellcode zum Zeitpunkt der Kompilierung vor tatsächlichen erweiterten Elementen.

Was Sie derzeit jedoch suchen, ist wahrscheinlich die äußere Klammer mit allen internen Erweiterungen entfernt. Dies könnte während einer Code-Migration von einem Quellcode-Kontrollsystem zu einem anderen geschehen. Obwohl eine solche Idee höchst spekulativ ist, scheint es nicht so, dass sie sich die Mühe gemacht haben, Expansionselemente zu migrieren, anstatt sie einfach zu entfernen.

0

Bei einem Projekt habe ich zu arbeiten, enthielt jede C-Quelldatei einen Kommentar am Ende:

/* End of file */ 

Der Grund, dass die gcc Warnung war

Warning : No new line at end of file 

Also das wir hatten, Kommentar (mit einer neuen Zeile danach) um sicher zu sein, dass die Leute nicht nach dem Kommentar schreiben :)

+2

Das macht keinen Sinn! Personen können die neue Zeile am Ende des Kommentars immer noch löschen, sofern ihr Editor dies zulässt. – rodrigo

+0

Das ist eine gute Idee, und ich dachte darüber nach, es auch zu erwähnen; es ist jedoch nicht möglich zu erklären, warum die make-Dateien den gleichen Stil von Kommentaren haben. Make-Dateien werden nicht kompiliert, und daher erhalten sie 'gcc' nicht, um eine Compiler-Warnung auszugeben. –

+0

@rodrigo Sicher, aber sie sehen den Kommentar und schreiben nicht "nach dem Ende der Datei". Es hat in der Tat funktioniert. – Archie