代码之家  ›  专栏  ›  技术社区  ›  Welgriv

找到定义C/C++函数宏的文件比“GRIP”更简单的方法

  •  2
  • Welgriv  · 技术社区  · 7 年前

    我开始用一个已经被别人写的C和C++文件的音调来完成一个庞大的项目。

    有没有更快/更简单的方法来查找宏或函数是在什么文件中定义的,而不是 grep -r

    在某些IDE中 每次,我都要在终端上复制过去的名字,运行一个 grep

    3 回复  |  直到 7 年前
        1
  •  4
  •   PrashantUpadhyay    7 年前

    CTAG公司。您可以尝试在emacs中使用ctag,它将帮助您直接导航到函数声明。有关其用法,请参阅 https://www.emacswiki.org/emacs/EmacsTags

    你也可以浏览Cscope,它比ctags有更好的特性集,ctags直接用于模式识别。但有时,您只需要在代码中导航,而ctag通常会完成这项工作。

        2
  •  2
  •   legoscia    7 年前

    每次,我都要在终端上复制过去的名字,运行一个 grep 在emacs中重新复制文件路径。

    你可以通过使用 M-x rgrep 在Emacs内部。它要求正则表达式、要查找的文件的glob模式和要开始的目录。然后,它执行递归grep,将结果输出到缓冲区中,您可以直接从命中跳转到相应的文件。

    对于glob模式,可以键入 *.c grep-files-aliases ch 相当于 *.[ch] (C源文件和头文件)和 cchh *.cc *.[ch]xx *.[ch]pp *.[CHh] *.CC *.HH *.[ch]++

    您可能会发现,这样做很好,您不需要ctag和其他答案和评论中建议的其他工具。


    /* this is just a declaration */
    int main(int argc, char *argv[]);
    
    /* in the definition, the function name starts on its own line */
    int
    main(int argc, char *argv[])
    {
        ...
    

    ^main

        3
  •  1
  •   Fire Lancer    7 年前

    grep 如果将搜索限制在目录和文件类型(通常是 .h .hpp )有可能控制住它。例如,如果您知道它在应用程序中,只要在那里搜索,如果您知道它来自FreeType(通常是 FT_* )在那里搜索。