【发布时间】:2013-10-01 09:36:13
【问题描述】:
以下看起来语法正确并且编译良好。
unit MyAPI;
interface
// function Min(X, Y: Integer): Integer;
// function Max(X, Y: Integer): Integer;
implementation
function Min(X, Y: Integer): Integer;
begin
if X < Y then Min := X else Min := Y;
end;
function Max(X, Y: Integer): Integer;
begin
if X > Y then Max := X else Max := Y;
end;
end.
我想为另外 50 个函数做同样的事情,通常是我正在构建的动态库的外观函数。这 50 个函数的主体都很小,只需调用内部代码,然后通过输出 DLL 将数据转换为 C 风格调用。
出于这个原因,我想让编写界面部分变得经济。
unit MyAPI;
interface
uses Optimizer;
implementation
function Min(X, Y: Integer): Integer;
var
optimizer: TOptimizer;
begin
optimizer := TOptimizer.Create;
Min := optimizer.Min(X,Y);
end; stdcall;
...
end.
这是好的还是不好的做法?我还有哪些其他选择?
【问题讨论】:
-
那你是说不想写接口代码?没关系,这只是意味着这些函数在定义它们的单元之外是不可见的。
-
Min和Max已在Math单元中声明。尽量避免重复 RTL 实用程序。 -
@LURD - 我猜这是展示这个概念的一个例子。
-
在您的第二个代码示例中,如果可能,您应该将 Min 设为类函数,这样您就不必创建 TOptimizer 的实例。
-
我在这里看不到问题。我不明白为什么标题指的是
inline。这里没有内联。请编辑以明确您的要求。