我正在尝试std::string
使用 fmtlib 获得 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] 返回 std::strftime(str, count, format,时间);
我不明白,显然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)