【发布时间】:2015-08-15 19:17:43
【问题描述】:
我有以下嵌套函数:
int main()
{
int a, b, c;
a = 10;
int foo()
{
int a, b, c;
//some more code here
}
// some more code here
}
现在,我需要将属于foo() 的变量a 分配给属于main() 的变量a 的值。基本上,像foo.a = main.a 这样的东西就是我要找的。p>
有没有办法做这种作业?我通读了范围规则 here 和 here ,但没有找到在这种情况下可以使用的任何东西。
我知道不建议使用嵌套函数,但我正在处理预先存在的代码,并且我无权更改代码的结构。
我该怎么做?
【问题讨论】:
-
你真的要使用嵌套函数吗?这被支持为 GCC 扩展,而不是标准 C。
-
嗯,这是预先存在的代码,我没有修改代码结构的权限。
-
如何进行?将 main 中的 a b c 作为指向 foo 的指针传递并在 foo 中重命名 a b c
-
有什么方法可以在不更改 a b c 名称的情况下继续操作?
-
您继续摆脱嵌套函数。如果您有权进行任何更改,则可以修复该问题。而且你不能在 C 中使用范围解析;没有这样的概念。为什么更改变量名如此令人讨厌?你真正的问题是什么?
标签: c gcc scope nested language-lawyer