【问题标题】:Visual Studio (2015) fpermissive equivalent flagVisual Studio (2015) fpermissive 等效标志
【发布时间】:2016-03-20 20:29:38
【问题描述】:

在 VS2015 中是否有 GCC -fpermissive 的等效标志? 这是一个 cpp 应用程序 谢谢 S.

【问题讨论】:

  • 我希望不会,-fpermissive 是个糟糕的主意。它对非许可模式引入的变化范围太大,不易控制。
  • 您要解决什么具体问题?
  • 所以,本质上是一个类似于“将错误视为警告”的选项?不,这不存在。如果您有不合格的代码,只需修复代码。不要告诉编译器关闭,以便您可以将错误代码发送给客户。
  • 解决方法有一个原因(一如既往):我有一个高级源代码,它被翻译成 C 或 C++。我的特殊问题是,当我有一个值unsigned int * 时,它被传递给一个需要int * 的函数。所以在 GCC 中我可以使用 -fpermissive,而 VS 我无法构建程序。当然我知道这是一个错误的代码。这来自一个大型的合作项目......像这样的修复将(必须)在下一步中解决。
  • @simalps:“这样的问题将(必须)在下一步中解决”——我感到原力中出现了巨大的干扰,仿佛数以百万计的声音突然惊恐地尖叫着宇宙中的技术债务,然后被沉默了:-)

标签: c++ visual-studio-2015 compiler-flags


【解决方案1】:

VC++ 编译器默认允许,但您可以使用编译器标志 /permissive- 从 VS2015 Update 3 开始禁用它

【讨论】:

  • vs2k15u3 但是,当我在“项目属性 | C/C++ | 命令行 | 附加选项”字段中输入 /permissive- 时,我得到:2>cl : Command line warning D9002: ignoring unknown option '/permissive-'
  • @paxdiablo 你用的是什么版本?
  • @Pi:来自 vs2k15pro 帮助/关于:版本 14.0.25431.01 更新 3。
【解决方案2】:

理论上等价于/Ze

但是,这允许 Microsoft 特定的扩展,而 -fpermissive 允许 GCC 特定的扩展。如果您希望代码可移植,请编写可移植代码。就是这么简单。

【讨论】:

  • /Ze in VS2017 with MSVC 19 给了我“cl:命令行警告 D9035:选项 'Ze' 已被弃用,将在未来的版本中删除”
  • @parsley72:很高兴听到。
  • @parsley72:我回滚了你的更改。 -fpermissive 是 GCC 开关,如问题中所述。它与 VS2017 中的 /permissive- 完全不同。对于初学者来说,它具有相反的含义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多