g ++使用-Wpedantic选项编译C++ 11:是否有一个选项可以仅禁用有关未命名结构的警告?

Pet*_*ark 7 c++ gcc c++11

我想保留任何其他检查-Wpedantic,但会丢失有关未命名结构的警告error: ISO C++ prohibits anonymous structs [-Wpedantic].

我希望能够做到以下几点:

union
{
  struct
  {
    float x, y, z, w;
  };
  struct
  {
    float r, g, b, a;
  };

  float v[4];
};
Run Code Online (Sandbox Code Playgroud)

到目前为止我发现了什么

我正在使用C++ 11并使用-std=c++11标志进行编译.我已经读过C11支持这个功能,但我还没有看到它在C++ 11中得到支持.

我曾经提到过-fms-extensions:

我尝试了旗帜,它似乎没有任何效果(无论在-fms-extensions和之间排序的排列-Wpedantic).

编辑 - 更多细节

感谢我的评论,我发现了以下内容:

我仍然想知道是否有一种方法可以启用此gcc扩展(我知道所有编译器都有)将禁用该警告.或者是-Wpedantic全有还是全无?

Dan*_*rey 5

您可以-Wpedantic暂时禁用,例如,如果某些包含文件中有旧代码:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
#include "old_header.hpp"
#pragma GCC diagnostic pop
Run Code Online (Sandbox Code Playgroud)

当然,您也可以在每次使用匿名结构来限制pedantic禁用范围的情况下执行此操作,但是当您这样做时,您也可以继续修复代码本身:)


归档时间:

查看次数:

4317 次

最近记录:

11 年,7 月 前