如何处理有关C++尾部填充数组的警告
How to deal with warnings about tail-padded arrays in C++?
我正在编写一个C++应用程序,该应用程序使用C库在其标头之一中定义尾部填充结构。在不赘述太多细节的情况下,它看起来有点像这样:
struct MyStruct {
// ... other members
// The last member, a tail-padding array
MyType myBuffer[];
}
我将-Wall -Wextra -Wpedantic -Werror
与g++
和-std=c++0x
一起使用.
不幸的是,g++
给了我一个关于该数组的警告:
error: ISO C++ forbids zero-size array 'myBuffer' [-Wpedantic]
处理这个问题的正确方法是什么?
我知道我可以通过自己在标题中添加pragma
来抑制警告:
#pragma GCC diagnostic ignored "-Wpedantic"
但这感觉不对。你们有什么建议?
你可以
-
删除零大小的数组。
-
在没有
-Wpedantic
的情况下生成(可能仅适用于该文件)。 -
在没有
-Werror
的情况下构建并忽略警告。 -
将代码构建为 C。
相关文章:
- 如何建立使用模板函数的lambda函数的尾部返回类型
- 将尾部调用void(i32,..)位转换为llvm::函数以获取FnAttribute
- basic_string的前导/尾部不区分空格的特征
- 在带有尾部斜杠的路径上返回 std::filesystem::create_directories() 的值
- 编写一个函数来删除单链表中的节点(尾部除外),仅授予对该节点的访问权限
- 如何应用尾部调用优化
- 使用递归从尾部开始反转链表
- 如何在列表的末尾添加尾部元素
- 如何在全局函数中访问链表的头部和尾部
- 融合有尾部功能吗?
- 尾部调用优化是否适用于此功能?
- 链表,在尾部后面插入节点
- 删除矢量的尾部(通过擦除)内存是否有效
- 链表追加到尾部
- 取可变参数模板参数的尾部
- 如何防止递归功能调用(尾部回复)堆积在堆栈中
- 为什么 noreturn/__builtin_unreachable 会阻止尾部调用优化
- 删除最后一个节点,并将尾部更新到最后一个节点
- 如何从对象中获取对元组尾部的引用 std::tuple<Head,Tail...>
- DO NVCC和NVRTC支持尾部呼叫优化