【问题标题】:How should I disable C++0x and/or C++11 on the command line with Intel's Windows compiler?我应该如何使用英特尔的 Windows 编译器在命令行上禁用 C++0x 和/或 C++11?
【发布时间】:2023-04-04 09:07:01
【问题描述】:

我的跨平台项目上的构建系统有一个用于英特尔 Windows C++ 的命令行,由于检测到编译器功能集,它可能有也可能没有 /Qstd=c++0x。对于大多数代码库来说,这很有效,但是对于少数 CUDA 文件,我需要禁用最新的 C++ 方言以适应 nvcc 包装编译器的约束。

我应该如何在命令行末尾使用 /Qstd=c++98 或 /Qnostd=c++0x 之类的语句,以便它覆盖任何早期的 C++ 方言规范?

编辑:在了解到这些标志实际上是用于英特尔编译器的之后,我发现附加 /Qstd=c++98 可能是正确的方法。

【问题讨论】:

    标签: c++11 nvcc


    【解决方案1】:

    MSVC 不能。每个 MSVC 版本都期望在两个或三个标准之间有自己的解释,而你却被它困住了。

    您引用的选项适用于英特尔编译器(请参阅here)。如果可能的话,我建议使用英特尔编译器。

    我确实看不到在 C++ 编译器中禁用最近的方言将如何取悦 nvcc 包装器编译器...只要不要编写 C++11 代码,你会没事的,对吧?

    【讨论】:

    • 感谢英特尔的提示。我稍后会编辑问题。非 CUDA 代码根据编译器已知能够执行的操作有条件地使用或不使用 C++11。因此,我正在寻找一种方法来增加少量 CUDA 代码的标志,以强制主机编译器方言为 C++98,以便使用正确的 std 头文件。我可以强制将整个东西编译为 C++98,但这太过分了!同样,为每个非 CUDA 文件增加标志以添加 std=c++0x 会很丑陋。
    猜你喜欢
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多