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

aVC*_*aVC 2 c++ arduino include

菜鸟qn。

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

main.ino

#include "oldFunctions.h"

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


void newFunctionA(void){
//....
}
Run Code Online (Sandbox Code Playgroud)

旧函数.h。这是我随着时间的推移添加的文件,其中包含新的功能和内容。

void test(void){
   newFunctionA();
}
Run Code Online (Sandbox Code Playgroud)

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

有人可以帮忙吗?

fra*_*i87 5

把文件弄乱然后希望编译器发挥一些作用总是一个坏主意。我建议您按照文件的用途使用这些文件,所以

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

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

对于您的情况,您应该有三个文件:

main.ino

#include "oldFunctions.h"

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

void newFunctionA(void){
//....
}
Run Code Online (Sandbox Code Playgroud)

旧函数.h

#ifndef OLD_FUNCTIONS_H
#define OLD_FUNCTIONS_H

void newFunctionA();
void test();

#endif
Run Code Online (Sandbox Code Playgroud)

旧函数.cpp

#include "oldFunctions.h"

void test(void){
    newFunctionA();
}
Run Code Online (Sandbox Code Playgroud)

但请注意,在 cpp 文件中,您不应使用BLAHBLAHmain.ino. 如果需要,请将其移至文件中oldfunctions.h

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