È possibile, usando il preprocessore C / C ++, contare le righe all'interno di un file sorgente, in una macro o in qualche valore di tempo di compilazione disponibile? Ad esempio, posso sostituire MAGIC1
, MAGIC2
e MAGIC3
di seguito, e ottenere il valore 4 in qualche modo durante l'utilizzo 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
Appunti:
- Le estensioni specifiche del compilatore alle capacità del preprocessore sono accettabili ma indesiderabili.
- Se questo è possibile solo con l'aiuto di alcuni costrutti di C ++, al contrario di C, questo è anche accettabile ma indesiderabile (cioè vorrei qualcosa che avrebbe funzionato per C).
- Ovviamente questo può essere fatto eseguendo il file sorgente tramite alcuni script del processore esterno, ma non è quello che sto chiedendo.
__COUNTER__
e / o BOOST_PP_COUNTER
?
int arr[MAGIC4]
e ottenere il numero di righe in una sezione del mio codice precedentemente conteggiata.
__LINE__
che rappresenta il numero di riga corrente