É 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, MAGIC2e MAGIC3no 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