You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CycloneDDS IDL中能否直接定义数组类型的序列?

在CycloneDDS IDL中直接定义数组类型的序列问题

我尝试在CycloneDDS IDL文件中直接定义数组类型的序列,代码如下:

module TheModule
{
  struct SequenceOfarrays{
    sequence<long[3], 5> boundedArraySequence;
  };
};

使用CycloneDDS提供的idlc工具编译时出现语法错误。我知晓可以通过typedef long longArray[3];作为替代方案,但仍想了解是否存在无需使用typedef直接定义该类型的方法?


解答

CycloneDDS的idlc编译器不支持直接在sequence中内嵌匿名数组类型的写法,也就是sequence<long[3], 5>这种语法不符合它的解析规则。

从OMG IDL标准的角度来说,sequence的类型参数要求是一个具名的类型,而不是像long[3]这样的匿名数组类型。CycloneDDS的idlc严格遵循这一标准,没有做额外的语法扩展来支持匿名数组直接作为sequence的元素类型。

所以目前没有无需typedef的直接定义方式,你提到的通过typedef先把数组类型声明为具名类型的方案,是当前唯一可行的写法:

module TheModule
{
  typedef long longArray[3];
  struct SequenceOfarrays{
    sequence<longArray, 5> boundedArraySequence;
  };
};

内容的提问来源于stack exchange,提问作者Allen Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 20:02:00