¿Es posible, utilizando el preprocesador C / C ++, contar líneas dentro de un archivo fuente, ya sea en una macro o en algún tipo de valor disponible en tiempo de compilación? Por ejemplo, ¿puedo reemplazar MAGIC1, MAGIC2y MAGIC3en lo siguiente, y obtener el valor 4 de alguna manera cuando lo uso 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:
- Las extensiones específicas del compilador a las capacidades del preprocesador son aceptables pero indeseables.
- Si esto es posible solo con la ayuda de algunos de C ++, a diferencia de C, construir, eso también es aceptable pero indeseable (es decir, me gustaría algo que funcione para C).
- Obviamente, esto se puede hacer ejecutando el archivo fuente a través de un script de procesador externo, pero eso no es lo que estoy preguntando.
__COUNTER__y / o BOOST_PP_COUNTER?
int arr[MAGIC4]y obtener el número de líneas en alguna sección previamente contada de mi código.
__LINE__que representa el número de línea actual