我有一个带有某种类型函数指针的公共(public)变量的表单,如下所示:
{...}
interface
type TExternalFunction = function(var x : TAnotherCustomType): smallint;
{...}
var
MyExternalFunction : TExternalFunction;
{...}
implementation
function CreateThisForm():smalint;
begin
if (Assigned(MyExternalFunction)) then
begin
// do something
end;
end;
你看到任何可能的问题吗?
我是否必须将公共(public)函数指针显式初始化为零?
一位同事建议在表单的初始化部分将函数指针初始化为 nil,这有意义吗?
提前致谢
最佳答案
如果不初始化全局变量,它将被初始化为 0(或 nil):
http://docwiki.embarcadero.com/RADStudio/XE7/en/Variables
所以我认为该代码没有问题。但是,如果 MyExternalFunction 指向 dll 中的函数并且您稍后卸载 dll 而不将 MyExternalFunction 设置回 nil,您可能会遇到麻烦。
关于delphi - 函数指针 - 初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26333241/