【发布时间】:2021-06-29 02:02:53
【问题描述】:
我正在尝试使用 fmtlib 获得std::string 的 ISO 时间。
考虑以下代码:
const auto t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
const auto creation_time = fmt::format("{:%FT%T%z}", fmt::localtime(t));
我收到以下错误:
../deps/fmt-src/include/fmt/chrono.h: 在函数'size_t fmt::v7::detail::strftime(char*, size_t, const char*, const tm*)'中: ../deps/fmt-src/include/fmt/chrono.h:377:48:错误:格式不是字符串文字,未检查格式字符串 [-Werror=format-nonliteral] return std::strftime(str, count, format, time);
我不明白,显然fmt::localtime(t) 不是编译时字符串。
我错过了什么?
使用 fmtlib v7.1.3,使用以下标志编译以在嵌入式系统上工作:
target_compile_definitions(fmt PRIVATE FMT_STATIC_THOUSANDS_SEPARATOR FMT_USE_DOUBLE=0 FMT_USE_LONG_DOUBLE=0)
【问题讨论】: