按索引或字段分配在C++中不起作用

assignment by index or field doesn't work in C++

本文关键字:C++ 不起作用 分配 索引 字段      更新时间:2023-10-16
static struct inet_protosw inetsw_array[] =
{
    [0] = { /* assignment by index */
      .type =       SOCK_STREAM, /* assignment by field */
      .protocol =   IPPROTO_TCP,
      .prot =       &tcp_prot,
      .ops =        &inet_stream_ops,
      .no_check =   0,
      .flags =      INET_PROTOSW_PERMANENT |
              INET_PROTOSW_ICSK,
    },
}

上面的代码可以在C中工作,但不能在c++中工作。我认为这两种方法都很好。c++如何移除它?

PS:现场分配似乎可以通过以下方式完成:类型:SOCK_STREAM

C和c++是不同的语言。此代码示例使用了C中存在的、c++中不存在的对象初始化特性。

并不是"c++删除了它",而是当c++从它分支出来的时候,它还不是C的一部分。

如果我没记错的话,[0].type初始化指示器是由ISO C99引入的,而且自从1998年c++标准发布以来,它并没有包含这些特性。

在c++ 11中也是不可能的。标准中的相关章节是8.5.1 Aggregates,该章节中的所有示例都没有指示符。