Чи можливо за допомогою препроцесора C / C ++ порахувати рядки у вихідному файлі або в макрос, або в якесь значення, доступне для компіляції? Наприклад, чи можу я замінити MAGIC1
, MAGIC2
і MAGIC3
в наступному, і отримати значення 4 якось під час використання 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
Примітки:
- Розширення для компілятора для можливостей препроцесора є прийнятними, але небажаними.
- Якщо це можливо лише за допомогою деякої конструкції C ++, на відміну від конструкції C, це теж прийнятно, але небажано (тобто, мені б хотілося, щоб щось працювало на C).
- Очевидно, що це можна зробити, запустивши вихідний файл через якийсь зовнішній сценарій процесора, але це не те, що я прошу.
__COUNTER__
та / або BOOST_PP_COUNTER
?
int arr[MAGIC4]
та отримати кількість рядків у деякому раніше рахуваному розділі мого коду.
__LINE__
поточним номером рядка