【问题标题】:How to deny MSVC from including headers by itself如何拒绝 MSVC 本身包含标头
【发布时间】:2016-10-28 20:38:04
【问题描述】:

我写了一个小的 C++ 代码并在 MSVS 2013 中编译它。它编译得很好。但是,我尝试在 Ubuntu 上使用 GCC 编译它,它给出了一个错误,我正在使用不存在的 std::abs。然后我通过包含cmath 解决了这个问题。

为什么 MSVS 没有抱怨?它本身是否包含一些标题。如果是,我怎么能拒绝 MSVS 包含它想要的任何东西,这样这种非跨平台的代码就消失了?

【问题讨论】:

    标签: c++ visual-studio gcc cross-platform


    【解决方案1】:

    它本身是否包含一些标题

    虽然它可以根据项目设置执行此操作,但问题可能不是直接包含。 MSVC(以及 GCC)所做的也是在标题 B 中包含标题 A,因为 A 有一些内部需要 B 的部分。作为副作用,您当然也会从标头 B 中获得其他符号...

    如果是,我怎样才能拒绝 MSVS 包含它想要的任何内容

    如果不重写整个标题树,你就做不到。这(以及许多其他特定于编译器的东西)是使用 VS 和 GCC 编译的一个很好的理由,总是或至少定期进行编译,而不是首先使用一个编译器编写整个程序。 (尤其是如果 VS 是您的主要工具)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-17
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多