Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ubuntu命令获取C++;程序 我正在寻找一个工具,它将帮助我获得C++程序中所有可用的函数以及它们在./p>中可用的目录(如果递归调用)。_C++_Linux_Ubuntu - Fatal编程技术网

ubuntu命令获取C++;程序 我正在寻找一个工具,它将帮助我获得C++程序中所有可用的函数以及它们在./p>中可用的目录(如果递归调用)。

ubuntu命令获取C++;程序 我正在寻找一个工具,它将帮助我获得C++程序中所有可用的函数以及它们在./p>中可用的目录(如果递归调用)。,c++,linux,ubuntu,C++,Linux,Ubuntu,例如,如果在folder2存在的folder1中运行的是foo.c,那么它有int foo() 我想获取int foo()目录folder2/foo.c以防安装了Eclipse with CDT(),您可以创建一个新项目,导入所有代码并进行c/c++搜索。您还可以查看以下工具: ctags可能是您想要的 它是vim或emacs等编辑器创建标记的工具。这些编辑器可以使用标记来查找函数和类的声明和定义。这是一个非常粗糙的近似值,但可能已经让您更接近所要查找的内容,而且它的优点是非常简单。从代

例如,如果在folder2存在的folder1中运行的是foo.c,那么它有int foo()


我想获取int foo()目录folder2/foo.c

以防安装了Eclipse with CDT(),您可以创建一个新项目,导入所有代码并进行c/c++搜索。

您还可以查看以下工具:


    • ctags可能是您想要的


      它是vim或emacs等编辑器创建标记的工具。这些编辑器可以使用标记来查找函数和类的声明和定义。

      这是一个非常粗糙的近似值,但可能已经让您更接近所要查找的内容,而且它的优点是非常简单。从代码库的顶级目录运行:

      find -name "*.h" -exec grep -H '^[^/]*(' {} \;
      

      我假设当你谈到你的“C++程序”时,你可以访问所有C++源文件,并访问它的构建,例如它的代码> MaxFixe/Cuff>等

      如果您有权访问生成的二进制文件,您可以在其上使用
      nm-C
      来获取其中的函数

      然后,您可以考虑使用一些GCC扩展插件。您可以使用扩展GCC(这是一种用于扩展GCC编译器的特定于域的语言)。这个例子做了一些非常类似的事情(它只是计算函数,您可以添加几行代码,让它输出当前计算的函数的名称和源位置)

      但是请注意,由于GCC是优化的,程序中函数的概念可能没有您想象的那么明显:GCC是克隆和内联函数,这意味着生成的程序中的函数集不是源代码中的函数集

      在GCC编译器内部工作的优点是,您可以真正获得编译器看到的函数。例如,文本方法(如基于
      ctags
      grep
      的答案)不能很好地处理预处理技巧。

      这篇文章绝对不是离题。这是一个非常好的、与编程相关的问题。依我拙见