Чи можливо за допомогою препроцесора 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__поточним номером рядка