É possível, usando o pré-processador C / C ++, contar linhas dentro de um arquivo de origem, em uma macro ou em algum tipo de valor disponível no tempo de compilação? Por exemplo, eu pode substituir MAGIC1
, MAGIC2
e MAGIC3
no seguinte, e obter o valor 4 de alguma forma quando se utiliza 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
Notas:
- Extensões específicas do compilador para os recursos do pré-processador são aceitáveis, mas indesejáveis.
- Se isso for possível apenas com a ajuda de algumas das construções em C ++, em oposição a C, isso também é aceitável, mas indesejável (ou seja, eu gostaria de algo que funcionasse para C).
- Obviamente, isso pode ser feito executando o arquivo de origem através de algum script de processador externo, mas não é isso que estou perguntando.
__COUNTER__
e / ou BOOST_PP_COUNTER
?
int arr[MAGIC4]
e obter o número de linhas em alguma seção contada anteriormente do meu código.
__LINE__
que representa o número da linha atual