在C ++中使用extern来共享vairables

时间:2015-11-10 23:11:50

标签: c++ arduino extern

我已经在线查看了使用extern的例子,但是当我将它应用到我的项目时,它或者说已经在项目中多次定义了变量,或者变量超出了范围

的main.cpp

#include <SimPre.h>

void setup() {
  example();
  simController.println("Test");
}

void loop() {
  example();
}

SimPre.h

#include <SoftwareSerial.h>

#ifndef SIM_PRE
#define SIM_PRE

extern SoftwareSerial simController(7, 8);

void example();

#endif

SimPre.cpp

#include <Arduino.h>
#include "SimPre.h"

void example() {
  simController.println("Test");
}

上面的代码显示我试图从main.c访问simController变量,它也应该可以从SimPre.c访问但是我收到一个错误:

libraries/SimPre/SimPre.cpp.o:(.bss.simController+0x0): multiple definition of `simController'
sketch/DilshadSIM.ino.cpp.o:(.bss.simController+0x0): first defined here
collect2: error: ld returned 1 exit status

1 个答案:

答案 0 :(得分:2)

在SimPre.h中将其声明为:

extern SoftwareSerial simController;