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

including functions in seperate file in arduino

本文关键字:函数 文件 单独 arduino 包括      更新时间:2023-10-16

无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)应包含类定义(但不包含实现)、定义为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连接源文件,因为这可能会导致意外行为。