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

时间:2015-01-20 11:29:45

标签: c++ c function arduino arduino-ide

我在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);
  }
}

on function" void zeramento"我应该将所有输入(参数)声明为输入功能" unsigned long int deslocamento"也可以使用或者更容易和更短(或者更有效的内存优化)方法吗?例如,我应该声明为" void zeramento(posicaoA,sentido,& cont,pinecoder)"?

谢谢大家,对不起任何问题。我是新来的,还在学习英语。

1 个答案:

答案 0 :(得分:0)

这取决于你想要达到的目标。对于较短的代码,我只需调用您的函数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();
    ...
}