我的跨平台项目上的构建系统有一个英特尔Windows C ++命令行,由于检测到编译器功能集,可能有也可能没有/ Qstd = c ++ 0x。对于大多数代码库,这很好用,但是对于少量的CUDA文件,我需要禁用更新的C ++方言以适应nvcc包装器编译器的约束。
如何在命令行末尾添加/ Qstd = c ++ 98或/ Qnostd = c ++ 0x之类的内容,以便它覆盖任何早期的C ++方言规范?
编辑:我们已经了解到这些标志实际上是针对英特尔编译器的,我发现附加/ Qstd = c ++ 98可能是正确的方法。
答案 0 :(得分:5)
你不能用于MSVC。每个MSVC版本都希望自己对两个或三个标准之间的某些内容进行解释,而您却坚持使用它。
您引用的选项适用于英特尔编译器(请参阅here)。如果可能的话,我建议使用英特尔编译器。
我确实没有看到如何禁用C ++编译器中最近的方言会让nvcc包装编译器满意......只是不要编写C ++ 11代码,你会没事的吗?