sdl - 函数调用中参数前的 @ 在 Pascal 中意味着什么

标签 sdl pascal freepascal

我无意中发现了多个 Pascal 代码示例(FPC 编译器模式),其中有时在函数/过程调用中的参数名称之前使用“@”符号,但我找不到这意味着什么。有时我什至看到它与尚未声明的变量一起使用。例如:

procedure displayImage ( var window , image : PSDL_SURFACE );
    var destination_rect : TSDL_RECT ;
BEGIN
    {Setting of the x,y,w and h parameters of the destination_rect variable}
    SDL_BlitSurface (image , NIL , window , @destination_rect);
    SDL_Flip (window)
END;

SDL_PollEvent (@event); //The event variable hasn't been declared or initialized prior to this, yet this seems to work
if event.type_ = SDL_MOUSEBUTTONDOWN then
    {Do stuff}
if event.type_ = SDL_QUITEV then
    {Quit program}

我想这可能是 SDL 的一个怪癖,因为每次我遇到它都是在 SDL 相关函数中,但我找不到任何关于它的信息。

最佳答案

在像 Pascals 一样的 Borland 中,@ 是寻址运算符,类似于 C/C++ 中的 &。

此外,自己的 Free Pascal 方言(fpc 和 objfpc)在 TP/Delphi 中您可以传递函数/方法的地方需要 @

这是为了消除函数/方法返回具有相同签名的过程/方法类型的极端情况的歧义。

它是 objfpc 模式中的一个东西,它会损害兼容性并且不会增加太多(因为它只解决了一个非常人为的极端情况),这就是为什么我尽可能避免这些模式,并使用 {$mode delphi } 尽可能多。

关于sdl - 函数调用中参数前的 @ 在 Pascal 中意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50514631/

相关文章:

python - 矩形中的文本 - Pygame

c - SDL_BlitSurface 总是模糊的。我究竟做错了什么?

installation - InnoSetup,如果选择任何任务则阻止安装

c - 在 Delphi 程序中使用 CUDA 调用运行 C 函数

haskell - Free Pascal 有像 Haskell 那样的类型变量吗?

c - 从 C 程序链接到 SDL

c++ - SDL 渲染太慢

utf-8 - UTF-8中的字符串到字节数组?

performance - 检查括号顺序是否有效

pascal - Pascal 中的 Readkey(未知标识符)