Czy za pomocą preprocesora C / C ++ można policzyć wiersze w pliku źródłowym do makra lub innej wartości dostępnej w czasie kompilacji? Np. Czy mogę zamienić MAGIC1, MAGIC2i MAGIC3poniżej, i jakoś uzyskać wartość 4 podczas używania 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
Uwagi:
- Specyficzne dla kompilatora rozszerzenia możliwości preprocesora są dopuszczalne, ale niepożądane.
- Jeśli jest to możliwe tylko przy pomocy części C ++, w przeciwieństwie do C, konstruuj, jest to również dopuszczalne, ale niepożądane (tzn. Chciałbym coś, co działałoby dla C).
- Oczywiście można to zrobić, uruchamiając plik źródłowy za pomocą zewnętrznego skryptu procesora, ale nie o to pytam.
__COUNTER__i / lub BOOST_PP_COUNTER?
int arr[MAGIC4]i uzyskania liczby wierszy w pewnej wcześniej policzonej części mojego kodu.
__LINE__które reprezentuje bieżący numer linii