我需要浏览一个C/C++文件并提取类和方法列表以及它们在文件中的位置.
libclang是最好的选择吗?或者这项任务“太多”了吗?
只想寻找配对括号会更好吗?
如果选择libclang:有没有办法从c#调用它?
谢谢!
解决方法@H_301_12@
您可以考虑
ctags,可在许多平台上使用.输出很容易解析,并且您需要完整的信息.
更多信息
对于你的问题,我不得不寻找可用的许多选项,稍后我发现它.例如:
- ctags -N -x --c-kinds=+p crowd.*
产生这个输出
- 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 );
(注意:-x仅供用户检查)
更多信息
对于你的问题,我不得不寻找可用的许多选项,稍后我发现它.例如:
- ctags -N -x --c-kinds=+p crowd.*
产生这个输出
- 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 );
(注意:-x仅供用户检查)