我正在构建一个Arduino草图,我遇到了一个奇怪的错误:
'时间'未在此范围内声明
这些是我的包括:
#include <ESP8266HTTPClient.h>
#include <ESP8266WiFi.h>
#include <time.h>
#include <DS3232RTC.h> //http://github.com/JChristensen/DS3232RTC
#include <Streaming.h> //http://arduiniana.org/libraries/streaming/
#include <Time.h> //http://playground.arduino.cc/Code/Time
#include <Wire.h> //http://arduino.cc/en/Reference/Wire
#include <TimeLib.h>
这是我得到错误的函数:
void wifiTimeSetup() {
configTime(timezone * 3600, 0, "pool.ntp.org", "time.nist.gov");
Serial.println("Mi sto collegando al servizio per l'ora esatta tramite internet");
while (!time(nullptr)) {
Serial.print(".");
delay(1000);
}
Serial.println("");
}
包含Time.h和TimeLib.h库时会出现错误,但我也需要它来使用我的RTC模块。
包括time.h和Time.h通常都不是一个好主意。
这是由于您使用的编译器的区分大小写或不敏感。
显然这个冲突已经发布为一个已知问题:
https://github.com/PaulStoffregen/Time/issues/74
一些Arduino用户正试图将这个库与RTCZero这样的库一起使用,#include包含在像macOS和旧Windows这样的区分大小写的文件系统上。这是一个相关的问题:arduino-libraries / RTCZero#28编译器最终在RTCZero库中包含Time.h而不是POSIX time.h,这会导致编译错误。您是否愿意在库中重命名Time.h以避免冲突?