Ich habe mir den Quellcode der Boost- Bibliotheken angesehen und festgestellt, dass häufig einzelne Pfundzeichen ohne Präprozessoranweisungen vorhanden sind. Ich habe das Handbuch und die Spezifikationsanleitung des GCC-Präprozessors gelesen und kann nichts darüber finden.
(1) #ifndef BOOST_CONFIG_HPP
(2) # include <boost/config.hpp>
(3) #endif
(4) #
(5) #if defined(BOOST_HAS_PRAGMA_ONCE)
(6) # pragma once
(7) #endif
In Zeile 4 steht nach dem Pfundzeichen nichts mehr. Welchen Effekt hat das? Ist es in der C-Präprozessor-Spezifikation (CPP) definiert?
Da Boost eine plattformübergreifende Bibliothek ist, würde ich davon ausgehen, dass jeder CPP sie korrekt analysieren sollte. Was wären die Auswirkungen / Nebenwirkungen von zufälligen Pfund- / Hash-Zeichen im gesamten Code?
c++
c
boost
c-preprocessor
Callyalater
quelle
quelle
Antworten:
A
#
alleine auf einer Linie hat überhaupt keine Wirkung. Ich gehe davon aus, dass es für den ästhetischen Wert verwendet wird.Der C-Standard sagt:
Der C ++ - Standard sagt dasselbe:
quelle
Dadurch sieht der Quellcode hübsch aus, das ist alles.
Hebt die Tatsache hervor, dass der gesamte Block ein Präprozessorabschnitt ist.
Und in der Tat, sowohl die C- und C ++ Preprozessoren muss ignorieren
#
auf einer Linie.quelle
{
oder}
in vim) vereinfacht .#
möchten, können Sie durch Hinzufügen von{
oder nicht hinzufügen}
. Tatsächlich ist es möglicherweise einfacher,}
zweimal zu drücken, um über den Block zu springen (im Beispiel des OP), als nicht in die Mitte der beiden Blöcke zu springen.Überprüfen Sie immer eine maßgebliche Quelle, anstatt sich auf andere Ressourcen zu verlassen. C ist standardisiert als ISO 9899 :: 2011, C ++ hat auch einen ISO-Standard. Beide werden gut angenommen und die endgültigen Entwürfe durch eine kurze Suche verfügbar. Der C-Standard besagt in 6.10.7 (C ++ hat fast den gleichen Text):
Dies ist eine Null-Direktive , ebenso wie eine Null-Anweisung
;
ohne vorhergehenden Ausdruck in der Kernsprache eine Null-Anweisung ist .Für den Präprozessor ist es nur zur Formatierung / Lesbarkeit hervorzuheben, dass die Zeilen semantisch zusammengehören. (Das Semikolon OTOH ist semantisch relevant).
quelle