dlang语言最新dmd2103版本编译器如下代码import corestdcstdio;import corestdcstdlib;void callDelegateTestvoid delegateint aa callbackFuncint b callbackFuncb;void test int quanju = 88; void mycallint aa
这个错误是因为代码中使用了闭包和GC(垃圾回收),而在使用-betterC编译选项时,不支持使用GC和闭包。要解决这个问题,你可以使用-gc选项来启用GC,或者避免使用闭包。例如,你可以将quanju作为参数传递给mycall函数,而不是使用闭包来引用它。修改后的代码如下:
import core.stdc.stdio;
import core.stdc.stdlib;
void callDelegateTest(void delegate(int aa) callbackFunc,int b)
{
callbackFunc(b);
}
void mycall(int aa, int quanju)
{
printf("int number is:%d,quanju:%d",aa,quanju);
}
void test()
{
int quanju = 88;
callDelegateTest(&mycall,88, quanju);
}
extern(C)
{
void main()
{
test();
}
}
这里将mycall函数的参数列表改为(int aa, int quanju),并在调用callDelegateTest函数时传递了quanju参数。这样就避免了使用闭包,也不会触发-betterC错误
原文地址: https://www.cveoy.top/t/topic/faXL 著作权归作者所有。请勿转载和采集!