gpt4 book ai didi

c++ - 从定义变量的程序之外的程序中检索 C 全局变量

转载 作者:行者123 更新时间:2023-11-30 20:05:40 25 4
gpt4 key购买 nike

假设我有一个 C 程序 foo.c,它使用全局变量“i”

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()
}

关于c++ - 从定义变量的程序之外的程序中检索 C 全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29801289/

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