Ist es mit dem C / C ++ - Präprozessor möglich, Zeilen innerhalb einer Quelldatei entweder in ein Makro oder in einen zur Kompilierungszeit verfügbaren Wert zu zählen? Zum Beispiel kann ich ersetzen MAGIC1
, MAGIC2
und MAGIC3
in den folgenden, und den Wert 4 irgendwie erhält bei der Verwendung MAGIC3
?
MAGIC1 // can be placed wherever you like before the relevant
// lines - either right before them, or in global scope etc.
foo(); MAGIC2
bar(); MAGIC2
baz(); MAGIC2
quux(); MAGIC2
// ... possibly a bunch of code here; not guaranteed to be in same scope ...
MAGIC3
Anmerkungen:
- Compilerspezifische Erweiterungen der Funktionen des Präprozessors sind akzeptabel, aber unerwünscht.
- Wenn dies nur mit Hilfe einiger C ++ - Konstrukte möglich ist, im Gegensatz zu C, ist dies ebenfalls akzeptabel, aber unerwünscht (dh ich möchte etwas, das für C funktioniert).
- Natürlich kann dies durch Ausführen der Quelldatei über ein externes Prozessorskript erfolgen, aber das ist nicht das, was ich frage.
__COUNTER__
und / oder BOOST_PP_COUNTER
?
int arr[MAGIC4]
um die Anzahl der Zeilen in einem zuvor gezählten Abschnitt meines Codes zu sagen und abzurufen .
__LINE__
, das die aktuelle Zeilennummer darstellt