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

时间:2013-10-04 09:43:31

标签: c++ c gcc struct initialization

我在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不同?

1 个答案:

答案 0 :(得分:16)

在C99中引入了指定的初始值设定项,GCC也支持它们作为GNU89的扩展,但不支持C ++。

因此您需要使用C89样式,C ++也支持该样式。由于结构只有这两个字段:

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

参考:Designated Initializers