20

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

4

1 回答 1

23

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

所以你需要使用 C89 风格,C++ 也支持这种风格。由于结构只有这两个字段:

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

参考:指定初始化器

于 2013-10-04T09:47:01.147 回答