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

时间:2016-04-13 05:52:35

标签: c++ arduino include

Noob 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

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

总是一个糟糕的想法搞乱文件,然后希望编译器做一些魔术。我建议你使用这些文件,因为

  • 头文件(*.h*.hpp)应包含类定义(但不包括实现),定义为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文件中,您不应使用BLAHBLAH中定义的main.ino。如果需要,请将其移至oldfunctions.h文件。

newFunctionA中,您希望保持与旧功能分离的新功能,只需创建一个新的头文件并将其包含在内。重要的是你不要依赖arduino加入源文件,因为这会导致意外的行为。