gpt4 book ai didi

C++ 在另一个使用引用和参数的函数内调用函数

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

我正在 Arduino IDE(基本上使用 C++)编程,但在调用另一个函数内部的函数时遇到了麻烦。部分代码如下:

unsigned long int deslocamento (char sentido, byte &cont, const int pino, unsigned long int posicaoA)
{
byte leitura;
unsigned int deltaposicao;

leitura = digitalRead(pino);

if ((leitura == HIGH) && (cont == 0))
{
cont = 1;
}

if ((leitura == LOW) && (cont == 1))
{
cont = 0;

deltaposicao++;
}

if (sentido == 'F')
{
posicaoA += deltaposicao;
}

else
{
posicaoA -= deltaposicao;
}

return posicaoA;
}

void zeramento (unsigned long int posicaoA)
{
byte pwm = 255;
char sentido = 'R';

byte fator;

fator = fatorcorrecaoP (pwm);

while (posicaoA != 0)
{
posicaoA = deslocamento (sentido, cont, pinencoder, posicaoA);

posicaoA -= fator;

comando (sentido, pwm);
}
}

在函数“void zeramento”上,我应该将函数“unsigned long int deslocamento”也使用的所有输入(参数)声明为输入,还是有一个更简单、更短(或者在内存优化方面可能更有效)的方法去做?例如,我应该声明为“void zeramento(posicaoA, Sentido, &cont, pinecoder)”吗?

感谢大家,对于任何问题,我们深表歉意。我是新来的,仍在学习英语。

最佳答案

这取决于您想要实现的目标。对于较短的代码,我将仅调用您的函数 funcAfuncB 以及参数 par1par2

你可以做任何一个

void funcA(int par1, int par2)
{ ... use par1 and par2 ... }

void funcB(int par1, int par2)
{
...
funcA(par1, par2);
...
}

int global_par1;
int global_par2;

void funcA(int par1, int par2)
{ ... use par1 and par2 ... }

void funcB()
{
...
funcA(global_par1, global_par2);
...
}

在第一种情况下,您仅使用局部变量,而在第二种情况下,您使用全局变量。

不同之处在于,在全局情况下(请在 funcAfuncB 中以不同的方式调用它们,因为可能存在可读性问题)变量对于整个程序是唯一的(即,如果您在 main 中修改它们,即使在函数中也将修改它们),而在本地情况下,您只是处理它们的本地拷贝。

在我看来,由于这些变量确定了位置(这是唯一的),我会采用完全全局的解决方案,即

int global_par1;
int global_par2;

void funcA()
{ .. use global_par1 and global_par2.. }

void funcB()
{
...
funcA();
...
}

关于C++ 在另一个使用引用和参数的函数内调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28044274/

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