gpt4 book ai didi

c++ - 查找函数名称并计算其 LOC

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:28 28 4
gpt4 key购买 nike

所以你马上就知道,这是我分配的一个项目。我不是在代码中寻找答案,而是在寻找方向。

我被告知要做的是浏览一个文件并计算实际代码行数,同时记录函数名称和函数的各个代码行。我遇到的问题是在读取文件时确定一种方法来确定该行是否是函数的开头。

到目前为止,我只能想到可能有一个数据类型(int、double、char 等)的字符串数组,在行中搜索它然后搜索括号,然后搜索缺少的分号(所以我知道这不仅仅是函数的声明)。

所以我的问题是,这是我应该如何处理这个问题,还是有其他您可以推荐的方法?

我将计算的代码将使用 C++。

最佳答案

想到了三种方法。

  1. 使用正则表达式。这与您的想法非常相似。查找看起来像函数定义的行。这做起来相当快,但在很多方面可能会出错。

    char *s = "int main() {"

    不是一个函数定义,但肯定看起来像一个。

    char
    * /* eh? */
    s
    (
    int /* comment? // */ a
    )
    // hello, world /* of confusion
    {

    是一个函数定义,但看起来不像。

    好:编写速度快,即使遇到语法错误也能正常工作;坏:很容易在看起来像(或看起来不像)“正常”情况的事情上失火。

    变体:首先运行代码,例如 GNU 缩进。这将解决一些(但不是全部)失火问题。

  2. 使用适当的词法分析器和解析器。这是一种更彻底的方法,但您可以重新使用开源词法分析器/解析器(例如,来自 gcc)。

    好:将 100% 准确(永远不会失火)。不好:少了一个分号,就会出现错误。

  3. 看看您的编译器是否有一些可能有用的调试输出。这是 (2) 的变体,但使用您的编译器的词法分析器/解析器而不是您自己的。

关于c++ - 查找函数名称并计算其 LOC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/931476/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com