Puede considerar ctags, disponible en muchas plataformas. El resultado es fácil de analizar y está lleno de información que necesita.
más información Para su pregunta, tuve que mirar a las muchas opciones disponibles, y después de un poco lo encontré. Por ejemplo:
ctags -N -x --c-kinds=+p crowd.*
produce esta salida
CrowdSim class 44 crowd.h class CrowdSim
CrowdSim function 47 crowd.h CrowdSim(const std::string& contentDir) : _contentDir(contentDir) {}
Particle function 35 crowd.h Particle()
Particle struct 25 crowd.h struct Particle
_contentDir member 56 crowd.h std::string _contentDir;
_crowd_H_ macro 18 crowd.h #define _crowd_H_
_particles member 57 crowd.h std::vector<Particle> _particles;
animTime member 32 crowd.h float animTime;
chooseDestination function 24 crowd.cpp void CrowdSim::chooseDestination(Particle &p)
chooseDestination prototype 53 crowd.h void chooseDestination(Particle &p);
dx member 28 crowd.h float dx, dz; // Destination position
dz member 28 crowd.h float dx, dz; // Destination position
fx member 29 crowd.h float fx, fz; // Force on particle
fz member 29 crowd.h float fx, fz; // Force on particle
init function 35 crowd.cpp void CrowdSim::init()
init prototype 49 crowd.h void init();
node member 31 crowd.h H3DNode node;
ox member 30 crowd.h float ox, oz; // Orientation vector
oz member 30 crowd.h float ox, oz; // Orientation vector
px member 27 crowd.h float px, pz; // Current postition
pz member 27 crowd.h float px, pz; // Current postition
update function 68 crowd.cpp void CrowdSim::update(float fps)
update prototype 50 crowd.h void update(float fps);
(nota: -x es sólo para facilitar la inspección de usuario)
Por supuesto siempre hay una forma de invocar el código C++ desde .NET, usando C++/CLI. Una solución más portátil sería proporcionar un envoltorio simple de C alrededor de libclang (debería ser bastante sencillo). Pero la mejor solución posible sería ir a una versión anterior de Clang, cuando aún existía su bonita impresora XML. Es realmente triste que haya sido eliminado de Clang. –
Otra opción (un poco oxidado, pero aún funciona para la mayoría de los casos) es el analizador Elsa combinado con el preprocesador gcc. –
No tiene claro la precisión de la respuesta que desea. Podría construir una solución basada en paréntesis de emparejamiento que probablemente produciría información simple de método/clase el 90% del tiempo, con errores espectaculares el otro 10%. ¿Qué piensas hacer con los resultados? –