【发布时间】:2022-01-08 20:28:13
【问题描述】:
我正在将一个不起眼的库从 C 移植到 dart。
一个属性是在这样的结构上定义的
unsigned char payload[256];
我将其解释为一个字符数组。所以我把它转换成
List<int> payload;
后来在原库中有这段代码
parser->handleDataValue( extendedCodeLevel, code, numBytes, parser->payload+i, parser->customData );
其中 'i' 是循环的索引
我把它翻译成
parser.handleDataValue(extendedCodeLevel, code, numBytes, parser.payload + i, parser.customData);`
现在我正在处理错误
The argument type 'int' can't be assigned to the parameter type 'List<int>'.
我了解问题的 dart 方面,但我不明白原始 C 语言编写其 dart 等效项的含义。
【问题讨论】:
-
它执行指针运算。用 C 语言编写它的另一种方法是
&(parser->payload[i]) -
对于任何数组或指针
p和索引i,表达式p[i]完全等于*(p + i)。由此可以推断出p + i是一个指向索引i处元素的指针(即&p[i])。 -
@Someprogrammerdude 啊,这是否意味着它指向
payload数组中的下一个元素? -
@xerooperator:不。将 1 点添加到下一个元素。将
i点添加到从起点位移i元素的元素。 -
哦,我明白了,谢谢。
标签: c dart porting code-conversion