将异常规范松散错误视为警告的 Clang 编译器选项

Posted

技术标签:

【中文标题】将异常规范松散错误视为警告的 Clang 编译器选项【英文标题】:Clang compiler option to treat exception specification lax error as warning 【发布时间】:2017-09-07 00:03:02 【问题描述】:

有没有办法将异常不匹配错误视为clang中的警告?

source_file.cpp:12:18: 错误:覆盖函数的异常规范比基础版本更宽松 虚拟 void Func()

对于指定异常说明符的函数,我在使用 google mock 时遇到错误。查看https://github.com/google/googletest/pull/681 和其他报告的问题,不确定这是否会在 google mock 中得到修复,所以至少对于测试代码,如果可能的话我想禁用它。

//clang 3.8.0
#include <iostream>

struct A

    virtual void Func() throw() 
;
struct B : public A

    virtual void Func()
;

int main()

    B b;  
    return 0;

【问题讨论】:

【参考方案1】:

是的,使用-fms-extensions 命令行选项。 MSVC 仅对此发出警告,因此使用 clang MSVC 兼容模式,代码将编译,错误将替换为等效警告。

在 clang 文档中更多关于 MSVC 兼容模式, here.

【讨论】:

以上是关于将异常规范松散错误视为警告的 Clang 编译器选项的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 中的“将所有警告视为错误,除了...”

Make - 特定文件的“将警告视为错误”

将警告视为错误无效

iOS编程 手动忽略clang编译器警告

使用 ccache / clang 编译 Qt 代码时避免多余的警告

将警告视为错误