Форум: "Основная";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];
ВнизНепонятка с директивами компилятора Найти похожие ветки
← →
Piter © (2005-09-17 12:57) [0]Вот модуль:
unit dc_api;
interface
uses SysUtils, Windows;
{$define DC_API_INTERFACE}
{$include dc_helper.inc}
{$undef DC_API_INTERFACE}
implementation
{$define DC_API_IMPLEMENTATION}
{$include dc_helper.inc}
{$undef DC_API_IMPLEMENTATION}
end.
А вот файл dc_helper.inc:{$IFNDEF DC_HELPER}
{$DEFINE DC_HELPER}
{$ifdef DC_API_INTERFACE}
function ConvertVersionToString(ver: DWORD): string;
{$ENDIF}
{$IFDEF DC_API_IMPLEMENTATION}
function ConvertVersionToString(Ver: DWORD): string;
var
a,b,c: integer;
begin
a := (Ver and $00FF0000) shr 16;
b := (Ver and $0000FF00) shr 8;
c := (Ver and $000000FF);
Result := IntToStr(a)+"."+IntToStr(b)+"."+IntToStr(c);
end;
{$ENDIF}
{$ENDIF}
Почему-то пишет: "[Error] dc_api.pas(1): Unsatisfied forward or external declaration: "ConvertVersionToString""
Но почему? Вроде все правильно - в Implementation секцию dc_api должен подставляется код реализации ConvertVersionToString... В чем ошибка?
Интересно, что если убрать{$IFNDEF DC_HELPER}
и завершающий{$ENDIF}
- то работает...
← →
TUser © (2005-09-17 13:32) [1]У меня нормально заработало.
← →
Piter © (2005-09-17 13:38) [2]TUser © (17.09.05 13:32) [1]
как так...
← →
TUser © (2005-09-17 13:43) [3]Вот так
// uDef.pas
unit uDef;
interface
{$define intf}
{$include iDef.inc}
{$undef intf}
implementation
{$define impl}
{$include iDef.inc}
{$undef impl}
end.
// =======
// iIDef.inc
{$ifdef intf}
procedure Test;
{$endif}
{$ifdef impl}
procedure Test;
begin
writeln ("test ok");
end;
{$endif}
А ты просто один раз сказал ifndef DC_HElper, он у тебя определился. А когда второй раз вставил тот же файл - DC_Helper уже определен, поэтому не вставляется ничего. Поэтому нет реализации объявленной функции.
← →
Piter © (2005-09-17 13:45) [4]Вот выкладываю проект тестовый, простенький:
http://piter.pechora.org/temp/test_include.zip (2 Kbyte)
У меня он НЕ компилируется, выдается:"[Error] dc_api.pas(1): Unsatisfied forward or external declaration: "ConvertVersionToString""
← →
Piter © (2005-09-17 13:47) [5]TUser © (17.09.05 13:43) [3]
блиииин... во я дурак, башка едет... как я мог не заметить :(((
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.015 c