【发布时间】:2011-06-14 12:50:11
【问题描述】:
我在 C++ 文件中有以下代码:
#include <sys/socket.h>
// ...
void someFunc() {
struct msghdr msg = {0}; // <<< Uninitialized member here
}
当我使用g++ 使用-Wall -Wextra 编译时,我收到警告:
error: missing initializer for member 'msghdr::msg_namelen'
...same for several other fields
我的问题是:我无法显式初始化所有字段,因为我不知道struct msghdr 中将存在哪些字段(跨平台)。该结构没有默认构造函数,因为它是 C 结构。我的印象是 = {0} 表单导致所有字段的零初始化(这对我来说很好),但 g++ 错误消息表明不是。
我有什么选择?
【问题讨论】:
标签: c++ cross-platform initialization