【问题标题】:Warnings issued during compile phase of stan在 stan 的编译阶段发出的警告
【发布时间】:2017-12-17 21:17:17
【问题描述】:

我在 cpp 编译阶段收到两个警告,其中包含我提交的所有 stan 程序。

C:/Larry/R/win-library/3.4/BH/include/boost/config/compiler/gcc.hpp:186:0: 警告:“BOOST_NO_CXX11_RVALUE_REFERENCES”重新定义#define BOOST_NO_CXX11_RVALUE_REFERENCES

cc1plus.`exe:警告:无法识别的命令行选项“-Wno-ignored-attributes”

由于我在提交其他 Rcpp 程序时没有收到这些警告,我怀疑它们是在 Stan 程序的 gc++ 编译过程中生成的。它们似乎是无害的,但它们令人不安。我在 Stack Overfkiw 上看到了许多其他包含这些警告的消息,但我没有找到对它们的任何解释,也没有找到纠正产生这些警告的原因的方法。

我正在使用 Rtools 3.4.0.1964 在 Windows 10 中运行 R 3.4.3 和 RStudio 1.1.383。如果有人向我解释这些警告以及我必须做些什么来纠正它们,我将不胜感激。

【问题讨论】:

    标签: rstan


    【解决方案1】:

    不要担心其中任何一个。

    第一个是告诉你它重新定义了 Boost 的东西,但它正在重新定义它已经设置的东西。

    如果您将 -Wno-ignored-attributes 从 ~/.R/Makevars 文件的 CXXFLAGS 行中取出,则可以避免第二种情况。它适用于不同的编译器或版本或其他东西,并被忽略。

    【讨论】:

    • 根本问题不在于 Stan 代码,而在于 Stan 通过 CRAN 包 BH 导入的 Boost 代码。修复它的唯一方法是在每次 Boost 版本更改时使用标头保护和包含顺序来破解 Boost。在某些时候再次这样做可能是值得的,因为所有误报警告对用户来说都是非常令人担忧的。我还看到编译 Stan 模型时出现时区变化之类的问题——不知道为什么会涉及这些问题。
    猜你喜欢
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多