从C到C ++的常量结构中char数组的静态初始化

我在C中有一些现有代码:

extern const struct sockaddr_un addr =
{
    .sun_family = AF_UNIX,
    .sun_path   = "myreallylongpath"
};

其中sun_path是一个字符数组。

在较旧版本的GCC中,这通常可以很好地编译为C。我现在已经将其转换为C ++,并且正在使用GCC v4.7.2。我不断收到错误:

“ C99指示符'sun_path'在聚合初始化器外部”

是否无法用C ++进行操作,还是语法与旧的C不同?

Yu Hao

指定的初始化器是在C99中引入的,GCC在GNU89中也支持它们作为扩展,但在C ++中不支持。

因此,您需要使用C ++样式,C ++也支持该样式。由于struct仅具有以下两个字段:

extern const struct sockaddr_un addr =
{
    AF_UNIX,
    "myreallylongpath"
};

参考:指定的初始化程序

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章