命名空间调用的多定义错误

时间:2018-01-10 05:11:47

标签: c++ arduino namespaces

我试图在我的主.ino文件中使用以下命名空间,但它给了我一个Motor变量的'多定义'错误。我是C ++的新手。任何帮助将不胜感激。

由于

.ino文件

using namespace InitFlower;

void setup() {
}

Motor m(STEP_DELAY,A_1,A_2,B_1,B_2);

void loop() {
  SETUP(m); 
}

InitFlower.h

#ifndef InitFlower_h
#define InitFlower_h

#include "Arduino.h"
#include "Motor.h"

namespace InitFlower {
  void SETUP(Motor m);
  Motor* localMotor;
}
#endif

InitFlower.cpp

#include "Arduino.h"
#include "Motor.h"
#include "InitFlower.h"

using namespace InitFlower;

void InitFlower::SETUP(Motor m) {
  localMotor = &m;
  localMotor->toSetup_LED();
}

1 个答案:

答案 0 :(得分:1)

更改标题文件中的以下内容:

Motor* localMotor;

于: extern Motor * localMotor;

然后将以下内容添加到源文件中:

namespace InitFlower {
  Motor* localMotor;
}