es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo utilizar atributos personalizados de C++ con Clang libTooling sin modificar el código de Clang?

Estoy escribiendo una herramienta que extrae las definiciones de interfaz del código C++.
En el proceso de escritura, decidí restringir el analizador para que procese solo el código marcado explícitamente para su procesamiento, y pensé que los atributos de C++ son la mejor manera de hacerlo.
Preferiría agregar, por ejemplo, las anotaciones [[export]] a las entidades que quiero exportar, pero me di cuenta de que libTooling no puede ver los atributos personalizados sin registrarlos en el propio código de Clang (me refiero a agregar el atributo al archivo tools/clang/include/clang/Basic/Attr.td).

Por lo tanto, mi pregunta es: ¿hay alguna forma de registrar el atributo sin modificar ese archivo (por ejemplo, registrando el atributo de forma programática o escribiendo un archivo propio Attr.td)?

ACTUALIZACIÓN: Estoy utilizando la biblioteca ASTMatchers para el análisis del código fuente, por lo que el enfoque basado en visitantes probablemente no funcione para mí.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en c++, clang, libtooling y c++-attributes, hay una forma de registrar atributos personalizados sin modificar el archivo Attr.td. Un enfoque es definir el atributo personalizado en un archivo de encabezado separado e incluirlo en el código que lo requiere. Sin embargo, este enfoque aún requiere modificaciones al código fuente.

    Otro enfoque es utilizar la API de complementos de Clang para registrar el atributo personalizado de forma programática. Este enfoque permite definir y registrar el atributo en tiempo de ejecución, sin modificar el código fuente. Sin embargo, este enfoque puede requerir un conocimiento significativo de la API de Clang y puede no ser factible en todas las situaciones.

    Dado que estás utilizando la biblioteca ASTMatchers para el análisis del código fuente, un enfoque basado en visitantes puede no funcionar para ti. Por lo tanto, es posible que sea mejor seguir el primer enfoque y definir tu atributo personalizado en un archivo de encabezado separado para mantener las modificaciones al código fuente mínimas.

Comments are closed.