包含数组的聚合的不明确初始化语法
在 C 中,初始化包含数组的聚合时,省略花括号可能会导致混乱和错误。这在以下示例中很明显:
结构的 std::array 需要大括号
第一个示例抛出错误,因为 std::array 是聚合并且缺少用户定义的构造函数。其内部数组的初始化需要显式大括号,如更正版本中所示:
POD 的 std::array 不需要大括号
相反, std::array
聚合的一致性
聚合成员需要大括号的原则也适用于其他类型的聚合,例如好吧:
D 中的歧义
但是,以下示例会导致错误:
在 D 中,初始化器因为 foo 本身就是一个数组。 meow3 中的大括号不明确,因为它们可以引用 foo 的初始化或其内部数组。为了解决歧义,需要显式大括号,如 bark3 中。
初始化聚合的机制
当聚合初始化中省略大括号时,适用以下规则:
其他示例
以上是何时在数组的 C 聚合初始化中使用大括号?的详细内容。更多信息请关注PHP中文网其他相关文章!