我已经在线查看了使用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
答案 0 :(得分:2)
在SimPre.h中将其声明为:
extern SoftwareSerial simController;