这个错误是因为代码中使用了闭包和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错误

dlang语言最新dmd2103版本编译器如下代码import corestdcstdio;import corestdcstdlib;void callDelegateTestvoid delegateint aa callbackFuncint b callbackFuncb;void test int quanju = 88; void mycallint aa

原文地址: https://www.cveoy.top/t/topic/faXL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录