小编Som*_*der的帖子

是否在d中实现了@nogc属性?

我在D中制作了一个计算Fibonacci数字的程序.它应该是最有效的,因为我这样做是为了比较D的执行速度和其他语言的执行速度.然后我在dlang.org上阅读了@nogc属性(这里:http://dlang.org/attribute#nogc ),并试着像这样使用它:

@nogc
@safe
uint fibonacci(uint index)
{
    if(index < 2)
        return index;

    return fibonacci(index - 2) + fibonacci(index - 1);
}
Run Code Online (Sandbox Code Playgroud)

我试过DMD 2.065和GDC 4.8.2,但两个都告诉我: Error: undefined identifier nogc

难道我做错了什么 ?@nogc暂时没有实现吗?

attributes d dmd gdc

4
推荐指数
1
解决办法
459
查看次数

dmd和gdc编译代码有何不同?

我目前正在尝试DerelictSDL2(D的SDL2库绑定),我编写了一个代码,可以成功加载JPG图像并在窗口中显示.也就是说,当它用dmd编译时.当我尝试使用gdc(并且没有代码修改)时,它会编译,但它不会在运行时加载图像.

我相信我做得对:

SDL_Init(SDL_INIT_VIDEO)

然后

IMG_Init(IMG_INIT_JPG)

在那之后的某个地方

this.data = IMG_LoadTexture(Window.renderer, name.ptr)

其中Window.renderer是(明显)的SDL_Renderer*name.ptr是一个char*指向图像的名称来加载.但是,与GDC,编译时IMG_LoadIMG_LoadTexture两回null,而与DMD他们返回一个指针到新创建的质感...

我忘记了别的东西(毕竟,使用dmd它甚至没有工作IMG_Init)?Derelict是否仅适用于dmd(即使它只与C函数接口)?

dmd:2.065

gdc:4.9.1

编辑:

事实证明问题完全不同.IMG_LoadTexture为第二个参数获取指向数据的指针,但name.ptr似乎只适用于dmd.但是,如果我尝试使用这样的硬编码参数:

IMG_LoadTexture(renderer, "../test/res/image.jpg")

它适用于dmd和gdc.

d dmd gdc derelict3 sdl-2

4
推荐指数
1
解决办法
183
查看次数

标签 统计

d ×2

dmd ×2

gdc ×2

attributes ×1

derelict3 ×1

sdl-2 ×1