如何处理有关C++尾部填充数组的警告

How to deal with warnings about tail-padded arrays in C++?

本文关键字:尾部 C++ 填充 数组 警告 何处理 处理      更新时间:2023-10-16

我正在编写一个C++应用程序,该应用程序使用C库在其标头之一中定义尾部填充结构。在不赘述太多细节的情况下,它看起来有点像这样:

struct MyStruct {
    // ... other members
    // The last member, a tail-padding array
    MyType myBuffer[];
}

我将-Wall -Wextra -Wpedantic -Werrorg++-std=c++0x一起使用.

不幸的是,g++给了我一个关于该数组的警告:

error: ISO C++ forbids zero-size array 'myBuffer' [-Wpedantic]

处理这个问题的正确方法是什么?

我知道我可以通过自己在标题中添加pragma来抑制警告:

#pragma GCC diagnostic ignored "-Wpedantic"

但这感觉不对。你们有什么建议?

你可以

  • 删除零大小的数组。

  • 在没有-Wpedantic的情况下生成(可能仅适用于该文件)。

  • 在没有-Werror的情况下构建并忽略警告。

  • 将代码构建为 C。