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

static initialisation of a char array in a constant struct from C to C++

本文关键字:char 数组 静态 初始化 常量 C++ 结构      更新时间:2023-10-16

>我有一些现有的 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 不同?

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

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

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

参考:指定的初始值设定项