假设我有一个使用全局变量 '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);
}
感谢您的想法。
我相信,在你的问题中,"程序"指的是"功能"
- 如果包装函数存在于
同一个编译单元(通常是源文件)中,则可以直接在包装函数中使用
i
,如下所述。i
是全球性的。要使用来自其他翻译单元的
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
}