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
有人可以帮忙吗?
答案 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加入源文件,因为这会导致意外的行为。