gpt4 book ai didi

c - C++ 中嵌套函数的全局变量

转载 作者:行者123 更新时间:2023-11-30 18:39:46 24 4
gpt4 key购买 nike

我是 C++ 的初学者,我遇到了一个问题。我在其他函数中定义了一个函数,并且我假设 fun1 中定义的变量就像 fun2 中的全局变量一样;但编译器说这不是在此范围内定义的!有没有办法让一些变量可以传递给 fun2 但不能传递给 main 或其他函数?

这是返回错误的示例:

double fun1(double,double);
int main()
{
double z,x=1.0,y=2.0;
z=fun1(x,y);
printf("z=%f",z);
return 0;
}
double fun1(double x, double y)
{
double fun2(void);
double q=5.0,w=7.0;
return x*q+y*fun2();
}
double fun2()
{
return w;
}

最佳答案

问题:

return w;

wfun2 中未知,更改为:

#include <stdio.h>

double fun1(double, double);

int main(void) /* void main is wrong */
{
double z, x = 1.0, y = 2.0;

z = fun1(x, y);
printf("z=%f\n", z);
return 0;
}

double fun1(double x, double y)
{
double fun2(double);
double q = 5.0, w = 7.0;

return x * q + y * fun2(w);
}

double fun2(double w)
{
return w; /* Nonsense but it works */
}

您还可以使用类似函数的宏:

#include <stdio.h>

double fun1(double, double);

int main(void)
{
double z, x = 1.0, y = 2.0;

z = fun1(x, y);
printf("z=%f\n", z);
return 0;
}

#define fun2() (w)

double fun1(double x, double y)
{
double q = 5.0, w = 7.0;

return x * q + y * fun2();
}

Nested functions在 GCC 中支持作为扩展:

#include <stdio.h>

double fun1(double, double);

int main(void)
{
double z, x = 1.0, y = 2.0;

z = fun1(x, y);
printf("z=%f\n", z);
return 0;
}

double fun1(double x, double y)
{
double q = 5.0, w = 7.0;

__extension__ double fun2(void)
{
return w;
}

return x * q + y * fun2();
}

关于c - C++ 中嵌套函数的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28628013/

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