Страница 1 из 2

Добавлено:
07.02.2008 00:34:33
Bohdan
Есть предложение подумать (благо флеймить любят все – этож не программу писать) и придумать, что же должно быть и чему не быть в идеальном (по нашему мнению) языке программирования.
Помоему обсуждение к сожалению ушло в сторону от первоначальной темы... Хотелось бы вернуться к обсуждению "ИДЕАЛЬНОГО ЯЗЫКА"
Вот кто подскажет, что делать с директивами условной компиляции?
Согласитесь что она значительно ухудшает читабельность программы, но без нее сейчас не обходиться ни один кросс-платформенный проект.

Добавлено:
07.02.2008 09:51:40
alexs
Bohdan писал(а):Вот кто подскажет, что делать с директивами условной компиляции?
По момему пока с ними миряимся, как с необходимым злом - но желательно использовать их как можно меньше.
Re: директивы условной компиляции

Добавлено:
25.09.2008 15:59:53
Logo
Подскажите, пожалуйста, директивы условной компиляции (если оини существуют) для QT и GTK/GTK2.
Что-то у меня ничего не получается.
Добавлено спустя 1 час 45 минут 13 секунд:
Разобрался...
LCLgtk, LCLgtk2, LCLqt, LCLfpgui, LCLwin32, LCLwinse, LCLcarbon.
Re: директивы условной компиляции

Добавлено:
11.12.2009 12:12:26
AbakAngelSoft
Прошу прощения, что поднимаю старую тему, но не смог сдержатся.
Мне кажется что директивы условной компиляции необходимо вообще убрать из "идеального языка".
То для чего они используются необходимо писать на самом языке:
- Код: Выделить всё
const Platform: String = 'Win64';
...
if (Platform = 'Win32') then begin
...
end else begin
...
end;
А вырезать неосуществимые ветви должен компилятор
Или располагать платформозависимые модули в отдельных папках как сейчас лежат откомпилированные. win32-i386, FreeBSD-x86_64 и т.д.
Re: директивы условной компиляции

Добавлено:
11.12.2009 12:16:01
Mr.Smart
Каждый должен заниматься своим делом!
Препроцессор обрабатывать директивы, а компилятор соответственно компилировать...

Re: директивы условной компиляции

Добавлено:
11.12.2009 12:22:32
AbakAngelSoft
Препроцесоры это вообще наносное. Компилировать должен компилятор. IMHO.
Re: директивы условной компиляции

Добавлено:
11.12.2009 17:44:43
v-t-l
AbakAngelSoft писал(а):То для чего они используются необходимо писать на самом языке:
Код: Выделить всё
const Platform: String = 'Win64';
...
if (Platform = 'Win32') then begin
...
end else begin
...
end;
А как быть с условными объявлениями (переменных, типов, функций, констант)?
Re: директивы условной компиляции

Добавлено:
11.12.2009 17:55:40
AbakAngelSoft
- Код: Выделить всё
unit ...;
...
const Platform: String = 'Win64';
...
type
if (Platform = 'Win32') then begin
TMyType = class(TWin32Class)
...
end;
end else begin
TMyType = class(TWin64Class)
...
end;
end;
Re: директивы условной компиляции

Добавлено:
11.12.2009 18:06:59
Max Rusov
И сколько чудесных багов принесет такое "усовершенствование" синтаксиса...
Re: директивы условной компиляции

Добавлено:
11.12.2009 18:15:42
AbakAngelSoft
Какие баги это может принести?
наоборот компилятор сможет бить по рукам в случаях неправильного использования директив!
А то сейчас необходимо пробовать компилировать при всех возможных сочетаниях что бы быть уверенным что директивы использованы правильно!
- Код: Выделить всё
{#IFDEF MyDEF}
type t = class(TObject);
{#ENDIF}
...
var c: t;
Если директива определена компилируется нормально и даже без предупреждений, а код-то неправильный!
Re: директивы условной компиляции

Добавлено:
11.12.2009 18:50:36
Max Rusov
Да утопия это. В том и преимущество препроцессора, что он вообще не парсит, ветки, которые не попадают под условие. Они может и не должны компилироваться, скажем программа под разные платформы, меня интересует только одна, а под остальные у меня нет библиотек.
Re: директивы условной компиляции

Добавлено:
11.12.2009 19:11:57
AbakAngelSoft
Не утопия!
Причем тут библиотеки?
Компилируется только код под текущую платформу, а анализируется весь, чтобы вовремя по рукам дать.
Мы же говорим о "идеальном языке"

Re: директивы условной компиляции

Добавлено:
11.12.2009 19:35:07
Max Rusov
Ну так, в вышеприведенном примере с неопределенным типом "t" она должна "по рукам дать", или нет?
Re: директивы условной компиляции

Добавлено:
11.12.2009 19:59:52
AbakAngelSoft
обязательно. Если код при некоторых условиях может вызывать ошибки компилятор должен об этом открыто говорить
Re: директивы условной компиляции

Добавлено:
11.12.2009 20:07:13
Max Rusov
Ok. А в таком варианте:
- Код: Выделить всё
const Platform: String = 'XXX';
uses
if Platform = 'XXX' then
XXXTypes;
else
YYYTypes;
end;
if Patform = 'XXX' then
type
TSomeType = integer;
end;
var
A :TSomeType;
YYYTypes у меня нет, я работаю на платформе XXX. Как разрулить?