【问题标题】:Compiling fmt with Intel C on Windows 32在 Windows 32 上使用 Intel C 编译 fmt
【发布时间】:2021-11-27 08:22:51
【问题描述】:

我们正在使用英特尔 C 编译器在 32 位和 64 位 Windows 上编译 fmt。在 32 位上,我们得到一个奇怪的错误。也许我们做错了什么,但问题是什么?这是错误消息:

../master/extern/fmt/8.0.1/include/fmt/format-inl.h(1126): error: expression must have a constant value
      static constexpr const uint128_wrapper pow10_significands[] = {
                                                                    ^

有什么修复建议吗?我们可能会使用 MSVC 进行构建。

更新:据我所知,format-inl.h(=inline 格式)仅应在仅标题模式下使用,这不是我想要的并且尚未打开。所以我必须弄清楚为什么会这样。

PS:fmt 很棒。

【问题讨论】:

  • 添加一个编译失败的完整最小示例。
  • 你必须把受错误影响的部分代码显示出来,如果你不知道原因,单独的错误信息是没有用的。

标签: fmt


【解决方案1】:

所讨论的表达式是常量,因此这看起来像是编译器中的一个错误,或者可能是 constexpr 的不完整实现。该错误消息具有误导性,但您可以通过删除 constexpr 或其他方式来解决此问题。

【讨论】:

  • 同意它看起来像一个编译器错误。谢谢
  • Intel C classic 有问题。最新的基于 Intel Clang 的编译器没有问题。所以我断定编译器有问题。
【解决方案2】:

您是否尝试过使用 C++17 编译器进行构建? constexpr 不是 C 关键字 afaik。

【讨论】:

    猜你喜欢
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 2018-06-21
    相关资源
    最近更新 更多