【问题标题】:Quantlib preprocessor directivesQuantlib 预处理器指令
【发布时间】:2023-04-08 04:19:01
【问题描述】:

我从 C++ 中的 Quantlib 开始,并尝试运行示例代码。我一直在关注

中的教程

https://www.youtube.com/watch?v=Wn_D19c2ABU&t=569s

当他在 5:36 向预处理器写入以下指令 (?) 时,我感到很困惑:

_SCL_SECURE_NO_DEPRECATE
_CRT_SECURE_NO_DEPRECATE

所以我的问题是:

1) 为什么需要这样做?
2) 这是 Quantlib 的东西还是 Boost 库需要的?
3) 包含外部库时是否总是需要这样做?

假设我想使用不同的定价库,我需要这样做吗?

【问题讨论】:

    标签: c++ quantlib


    【解决方案1】:

    Boost 在其旧版本的文档中这样说:

    Microsoft Visual C++ 6.0(sp5,带和不带 STLport)、7.0、7.1、8.0。注意:Boost 不支持 Visual C++ 8.0 附带的非标准“安全”C++ 库,这可能会导致来自 Boost 标头和其他符合标准的 C++ 代码的许多虚假警告。要抑制这些警告,请定义宏 _SCL_SECURE_NO_DEPRECATE。

    所以基本上,定义这两个东西可以避免编译器警告。您可以先尝试在没有它们的情况下构建项目,然后仅在需要时添加它们。

    【讨论】:

      【解决方案2】:

      这是微软的事情。他们认为标准库函数的某些版本比其他版本更安全。不是每个人都同意。

      但是,他们还认为,可能最需要“安全”版本的缺乏经验的用户可能不知道这一点,因此默认情况下会启用警告。

      更有经验的程序员可以分辨出其中的区别,也将了解如何关闭警告:

      Disabling Warnings generated via _CRT_SECURE_NO_DEPRECATE

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-29
        • 1970-01-01
        相关资源
        最近更新 更多