问题描述
file0:Main.ino(它是arduino文件):
#define AXIS_SERIAL Serial1
#include "header.h"
...
void setup(){...}
void loop() {...}
...
file1:header.h
...
#ifndef AXIS_SERIAL
#define AXIS_SERIAL Serial
#endif
...
file2:header.cpp
...
AXIS_SERIAL.print("Hello World")
...
问题: 当我在 AXIS_SERIAL 内部的 header.cpp 值中使用函数时,仍然是 Serial(不是 Serial1)。 有没有办法在主文件中定义一个常量,并在其他头文件中使用它?如果是这样,它将泛化我的一段代码。
我知道可以声明一个类似 HardwareSerial Axis_serial = Serial1;
的变量,但我将来可能会使用 Software Serial。所以我需要一个同时适用于硬件和软件串行类的东西。
解决方法
是的,这应该是可能的,最后 #define 指令用您输入的字符串替换您的新“别名”:
#define MY_DEFINE Serial
您的代码
void loop(){
MY_DEFINE.println("Hello World!");
}
你的编译器看到了什么:
void loop(){
Serial.println("Hello World!");
}