在arduino的单独文件中包含函数

including functions in seperate file in arduino

菜鸟qn.

我使用的是 Arduino 1.6.5,我有类似下面的东西可以工作。

main.ino

#include "oldFunctions.h"

#define BLAHBLAH
setup(){
  //....
}
loop(){
  //....
}


void newFunctionA(void){
//....
}

oldFunctions.h。这是我随着时间的推移添加的文件,具有新的功能和内容。

void test(void){
   newFunctionA();
}

这曾经在 Arduino 1.6.5 中工作,但我升级到 1.6.8,现在我收到错误消息说 newFunctionA 未在此范围内声明

有人可以帮忙吗?

弄乱文件然后希望编译器发挥一些魔力总是一个坏主意。我建议您按原样使用这些文件,因此

  • 头文件(*.h*.hpp)应包含 class 定义(但不包含实现)、定义为 extern 的全局变量、函数原型。他们应该使用共同的ifndef...来防止多重包含
  • 源文件(*.c*.cpp*.ino)应包含实际的函数实现、方法实现和全局变量定义。

你不要避免使用这个,否则你会进入很多可能的麻烦。

在你的例子中,你应该有三个文件:

main.ino

#include "oldFunctions.h"

#define BLAHBLAH
setup(){
  //....
}
loop(){
  //....
}

void newFunctionA(void){
//....
}

oldFunctions.h

#ifndef OLD_FUNCTIONS_H
#define OLD_FUNCTIONS_H

void newFunctionA();
void test();

#endif

oldFunctions.cpp

#include "oldFunctions.h"

void test(void){
    newFunctionA();
}

但是请注意,在 cpp 文件中,您不应使用在 main.ino 中定义的 BLAHBLAH。如果需要,请将其移动到 oldfunctions.h 文件。

newFunctionA 中有一个新函数,您希望将其与旧函数分开,只需创建一个新的头文件并包含它即可。重要的是你不要依赖 arduino 加入源文件,因为这会导致意外行为。