gpt4 book ai didi

c++ - Teensy 的#include 被 Arduino 覆盖了

转载 作者:行者123 更新时间:2023-11-30 04:46:57 29 4
gpt4 key购买 nike

在 Arduino C+ 中,我想在使用 32 位签名 time_t 类型时避免 2038 年溢出问题,因此我想专门使用 Time.h 来自 Teensy(或 TimeLib.h;我正在 Arduino 1.8.7 上为 Teensy 3.5 编写代码)。

但是IDE好像忽略了Teensy的Time.h,其中time_t定义为:

typedef unsigned long time_t;

我发现无论我包含什么,我使用的 time_t 类型都被编译为“long int”。此代码表明:

time_t t = "ABC";

编译器将显示 time_t 实际上在某处定义为 long int:

invalid conversion from 'const char*' to 'time_t {aka long int}' [-fpermissive]

我什至尝试将 Teensy 的 Time 文件夹 ( https://github.com/PaulStoffregen/Time ) 复制到我的 sketch 文件夹,但没有成功:

#include "Time\TimeLib.h"

如何确保我在 Arduino 中使用的是无符号的 32 位 time_t?我还希望当我调用 now() 时,是 Teensy 的 now() 返回 unsigned long time_t,而不是内置的 long int time_t

提前致谢!

最佳答案

在 teensy TimeLib.h 中它被定义为:

#if !defined(__time_t_defined) // avoid conflict with newlib or other posix libc
typedef unsigned long time_t;
#endif

sys/_types.h 将其定义为:

#define _TIME_T_    long        /* time() */
typedef _TIME_T_ __time_t;

在几个地方使用:

#if !defined(__time_t_defined) && !defined(_TIME_T_DECLARED)
typedef _TIME_T_ time_t;
#define __time_t_defined
#define _TIME_T_DECLARED
#endif

所以这不是一个被忽略的谜。否则,由于类型冲突,您将无法编译。

关于c++ - Teensy 的#include <TimeLib.h> 被 Arduino 覆盖了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56426827/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com