为什么这段代码声明了DISTINCT类型?

时间:2012-01-15 23:29:34

标签: delphi delphi-xe static-typing

ShlObj.pas第9922行(如在Delphi XE中):

type
  BFFCALLBACK = function(Wnd: HWND; uMsg: UINT; lParam, lpData: LPARAM): Integer stdcall;
  TFNBFFCallBack = type BFFCALLBACK;
  {$EXTERNALSYM BFFCALLBACK}

回答David Heffernan在这里的评论,因为我认为这概述了可能为什么要问这个?问题的相关背景。 Windows API原点的回调例程的过程类型被声明为类型别名(您知道,规范API名称+“Pascalised”别名,或者反之亦然)。例子是Windows.PIMAGE_TLS_CALLBACKShlObj.LPFNDFMCALLBACK等。上面显示的类型声明是一个例外。这就是我要问的原因: - )

1 个答案:

答案 0 :(得分:1)

这只是强制我们程序员使用TFNBFFCallBack而不是BFFCALLBACK的一种方法。如果它是别名,我们可以使用浏览信息结构。在不同的平台上,TFNBFFCallBack可能指向与BFFCALLBACK不同的东西。