从定义变量的位置以外的程序中检索 C 全局变量



假设我有一个使用全局变量 'i' 的 C 程序 foo.c

int i;
foo(x){
  i = x*x;
}

在不修改程序foo.c的情况下,C/C++中是否有一种机制让我们检索给定"x"的i值,例如,通过设计一个包装foo.c的C/C++程序,例如:

int foo2(x){
  foo(x);
  return the value of i stored in memory when computing foo(x);
}

感谢您的想法。

我相信,在你的问题中,"程序"指的是"功能"

    如果包装函数存在于
  1. 同一个编译单元(通常是源文件)中,则可以直接在包装函数中使用i,如下所述。 i是全球性的。

  2. 要使用来自其他翻译单元的i(例如,其他源文件中存在的某些其他函数),您可以extern同一变量的声明并利用它。

    extern int i;   //extern declaration of `i` in some other file, 
                    //where the wrapper function is present
    

之后,您始终可以在操作前复制 i 的值并return该值。保留先前值的副本后,更改后的i值不会在那里产生影响。类似的东西

int foo2(x){
  int temp = i;
  foo(x);
  return temp;  //will return the value of i before calling foo()
}

> i 已经可以从任何其他编译单元访问,前提是您事先声明它。

您可以声明它,然后访问它:

extern int i;
int foo2(/*type*/ x){
  foo(x);
  // i is available here
}

相关内容

  • 没有找到相关文章