【问题标题】:Is there a way to get list of local variables declared in C source code [closed]有没有办法获取在 C 源代码中声明的局部变量列表 [关闭]
【发布时间】:2021-02-24 02:54:51
【问题描述】:

我需要一种方法来提取 C 源代码中函数内所有局部声明变量的列表及其行号。有没有可能的方法..我需要这个列表在局部变量声明之后添加和初始化存根变量。

【问题讨论】:

    标签: c parsing


    【解决方案1】:

    在 C 程序的上下文中?

    没有。局部变量在 C 代码中并不真正“存在”。它们都是为方便程序员而设计的。这是因为人类在记住随机 64 位数字和可变长度机器操作码方面确实很糟糕。

    您可以通过外部工具执行此操作,但这些工具在编译时不起作用,并且无法更改已编译的代码。

    您问的是“反射”,而 C 基本上具有 反射功能。要么定义并编译某些东西,要么没有定义和编译。无法询问是否定义了某些函数或变量并更改代码的行为。

    您拥有的唯一工具是用于预处理的#define 宏,虽然您可以通过这些获得非凡的创意和狡猾,但您可以做的事情是有限的,更重要的是,应该做的事情。

    【讨论】:

    • @WhozCraig 不错。今天在脑子里学了 C++。
    • 你知道有没有这样的外部工具@tadman
    • 远不清楚您要实现什么,所以我会问:您要解决什么问题?
    • 我只需要在函数内部定义存根变量。这个过程是自动化的。我在 C 源文件中找到所有函数定义的列表,并在每个函数中定义存根变量。我使用左大括号作为我的索引并添加了这些变量。但是由于这些存根变量是在任何其他变量声明之前定义的,所以我得到语法错误。所以你知道任何解析器工具来获取局部变量声明。我尝试使用ctags 工具,但它只给了我全局变量
    • 我没有得到每次输入函数时修改全局的价值。该值仅在第一次函数调用之前有用,因为所有函数共享相同的全局。您可能会发现libbacktrace 很有用。
    猜你喜欢
    • 1970-01-01
    • 2013-06-27
    • 2018-06-05
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    相关资源
    最近更新 更多