Возможно ли с помощью препроцессора 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__
, которое представляет номер текущей строки