Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.05.06;
Скачать: CL | DM;

Вниз

stdcall   Найти похожие ветки 

 
Gu   (2012-01-06 00:28) [0]

в dll есть несколько юнитов, которые друг-друга юзают + в них есть экспорт процедур.

например

unit1;
..
Function MyXY(x,y:integer):integer; stdcall;

Exports MyXy;

implementation

Function MyXY(x,y:integer):integer;
begin
result:=x+y;
end;


uniit2;

uses unit1;
...

implementation

Procedure MyPrc;
var a,b,z:integer;
begin
...
z:=MyXy(a,b);
end;


Вопрос: будет ли влиять на внутренние функции (или еще на что) обращение к процедурам, которые идут на экспорт?

Или лучше сделать так (для внутреннего и внешнего использования писать отдельные процедуры):

unit1;
..
Function MyXY(x,y:integer):integer; stdcall;
Function MyXYTmp(x,y:integer):integer;

Exports MyXy;

implementation

Function MyXYTmp(x,y:integer):integer;
begin
result:=x+y;
end;

Function MyXY(x,y:integer):integer;
begin
result:=MyXYTmp(x,y);
end;


uniit2;

uses unit1;
...

implementation

Procedure MyPrc;
var a,b,z:integer;
begin
...
z:=MyXyTmp(a,b);
end;


 
DVM ©   (2012-01-06 00:47) [1]

В приведенном примере все равно, второй вариант особого смысла не имеет.

Такого рода вещи обычно появляются когда надо сохранить неизменным внешний интерфейс, при меняющемся внутреннем. Ну типа WinApi и NativeApi


 
Gu   (2012-01-06 00:53) [2]

в приведенном - да, а если функции - тяжелые, с кучей сложных параметров и тп.? т.е. имеет ли смысл их выностить в отдельные процедуры, к которым потом обращаться во внутренних юнитах и еще отдельными процедурами их на экспорт отправлять?


 
DVM ©   (2012-01-06 01:03) [3]


> Gu   (06.01.12 00:53) [2]

какая разница будешь ли ты вызывать функцию напрямую или через еще одну обертку над ней?


 
Gu   (2012-01-06 01:13) [4]

не, речь идет о том, что "вызывать функцию" и "вызывть функцию помеченую stdcall и идущую на экспорт", а не вызывать функцию через обертку.


 
DVM ©   (2012-01-06 01:15) [5]


> Gu   (06.01.12 01:13) [4]


> вызывть функцию помеченую stdcall и идущую на экспорт

т.е тебя беспокоит только то, что у функции указано соглашение stdcall?


 
RWolf ©   (2012-01-06 01:22) [6]

никакой разницы между вызовом «внутренней» и «импортированной» функции нет, с точностью до соглашения о вызове (stdcall и проч.).


 
Gu   (2012-01-06 01:30) [7]

понятно



Страницы: 1 вся ветка

Текущий архив: 2012.05.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
2-1325577531
defen
2012-01-03 11:58
2012.05.06
CRC


15-1325447864
Artem
2012-01-01 23:57
2012.05.06
Где можно скачать простой вычислитель арифметических выражений?


15-1325361710
Anatoly Podgoretsky
2012-01-01 00:01
2012.05.06
С Новым Годом


15-1325149872
ЛЕГЕНДА
2011-12-29 13:11
2012.05.06
клик мышкой при наведение на врага


15-1325001832
Pavia
2011-12-27 20:03
2012.05.06
Как проще?