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, MAGIC2und MAGIC3in 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