例如,我想编写一个带有此签名的函数:int foo(char[])
并使用char[5] x; foo(x)
调用它。
目前我收到编译错误,指出char []与char [5]不同。
我想写一下:int foo(uint SIZE)(char[SIZE])
但是我必须在调用foo前明确设置长度:foo!5(x)
以前的例子。
foo(ref char[])
,我已经宣布它为@nogc
。我想要做的是用数据填充给定的静态数组。
从更广泛的意义上讲,我试图实现简并format
函数,因为标准库肯定使用GC而我无法从其他非GC代码中调用它。有关于此的任何想法吗?
答案 0 :(得分:2)
char []确实不与char [5]相同,但没有什么能阻止您将静态数组作为参数传递给具有char []参数的函数,因为隐式转换。
示例:
module so.d26013262;
import std.stdio;
int getSize(int[] arr) {
return arr.length;
}
void main(string[] args) {
int[5] starr;
int[] dyarr = [1, 3, 2];
writeln(getSize(starr));
writeln(getSize(dyarr));
}
输出:
5
3
我的猜测是你在其他地方遇到错误......