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

Вниз

Существуют ли программы перевода сишных макросов в Паскаль?   Найти похожие ветки 

 
Одя   (2007-01-18 06:46) [0]

Если есть сами макросы и их вызовы. Чтобы программа сама осуществила все подстановки.

Перевести хочется вот это: http://opende.svn.sourceforge.net/viewvc/opende/trunk/include/ode/odemath.h?revision=1041&view=markup

Какой урод эти макросы выдумал? Ни типов, ни смысла без параметров не определить. Не чтение кода, а разгадывание ребусов.


 
Vga ©   (2007-01-19 23:39) [1]

> [0] Одя   (18.01.07 06:46)

Можно думаю развернуть макросы стандартным препроцессором С, это cpp32.exe в BCC или cpp.exe в GCC/MinGW.


 
palva ©   (2007-01-20 00:00) [2]

Стандартный препроцессор дает очень плохой текст буквально по одному идентификатору на строчке. Компилятор понимает такой текст слету, а человеку читать очень трудно. По-моему гораздо проще разобраться в исходниках по ссылке. Там очень простая логика и ясное изложение.


 
Одя   (2007-01-20 06:53) [3]


> Vga ©   (19.01.07 23:39) [1]
> > [0] Одя   (18.01.07 06:46)
> Можно думаю развернуть макросы стандартным препроцессором
> С, это cpp32.exe в BCC или cpp.exe в GCC/MinGW.

А как именно это сделать? cpp32.exe есть.


> palva ©   (20.01.07 00:00) [2]
> Стандартный препроцессор дает очень плохой текст буквально
> по одному идентификатору на строчке. Компилятор понимает
> такой текст слету, а человеку читать очень трудно. По-моему
> гораздо проще разобраться в исходниках по ссылке. Там очень
> простая логика и ясное изложение.

Что, издеваешься чтоли?


 
Одя   (2007-01-20 06:57) [4]

И ещё. Как переводится в Паскаль такое ?

invert_normal = ((expr1) < 0);


и


...
onborder = 1;
..
 if (!onborder) {...


 
Одя   (2007-01-20 07:06) [5]

И ещё:
 collide_bits = ~0;

Примерно ноль ? :)

Может быть есть какие нибудь книжки, для тех, кто знает Паскаль, но хочет изучить и Си++. Чтобы было описано что чему соответствует.


 
Sergey Masloff   (2007-01-20 07:21) [6]

Там настолько много не соответствует вообще ничему что никто такие книжки писать не будет. Одним словом нет. Если кто-то хочет изучить C++ он должен иметь полгодика свободного времени и пару хороших книжек. И других вариантов нет


 
ANTPro ©   (2007-01-20 11:24) [7]

> [4] Одя   (20.01.07 06:57)
> invert_normal = ((expr1) < 0);

invert_normal := expr1 < 0;


> [4] Одя   (20.01.07 06:57)
> onborder = 1;
> ..
> if (!onborder) {...

onborder := 1;
..
if not bool(onborder) then ...


Практически наугад : )


 
palva ©   (2007-01-20 11:34) [8]

Одя   (20.01.07 07:06) [5]

> Что, издеваешься чтоли?
Издеваюсь. Но препроцессор ты попробуй. Убедись, что яснее не будет.

> invert_normal = ((expr1) < 0);
Если invert_normal булевская, то так и будет invert_normal = expr1 < 0;
Если invert_normal целая, то if (expr1) < 0 then invert_normal = 1 else invert_normal = 0;

> if (!onborder) {...
if onborder = 0 then begin

> collide_bits = ~0;
collide_bits = not 0;


 
palva ©   (2007-01-20 11:37) [9]

Ну вот начал на си читать и все паскалевские присваивания написал по сишному На самом деле вот так будет:

> invert_normal = ((expr1) < 0);
Если invert_normal булевская, то так и будет invert_normal := expr1 < 0;
Если invert_normal целая, то if expr1 < 0 then invert_normal := 1 else invert_normal := 0;

> if (!onborder) {...
if onborder = 0 then begin

> collide_bits = ~0;
collide_bits := not 0;


 
ors_archangel ©   (2007-01-20 11:58) [10]


> Если invert_normal целая, то if expr1 < 0 then invert_normal
> := 1 else invert_normal := 0;

Я за
invert_normal := ord(expr1 < 0)


 
Одя   (2007-01-21 07:37) [11]


> ANTPro ©   (20.01.07 11:24) [7]
>
> > [4] Одя   (20.01.07 06:57)
> > invert_normal = ((expr1) < 0);
>
> invert_normal := expr1 < 0;

invert_normal - число.
Меньше нуля - это сколько именно?


> palva ©   (20.01.07 11:34) [8]
> Но препроцессор ты попробуй. Убедись,

Ты можешь нормально объяснить как его попробовать?


 
Vga ©   (2007-01-22 20:03) [12]

> [11] Одя   (21.01.07 07:37)

Запусти из командной строки cpp32 - он выведет памятку по использованию.
Примерно:
cpp32 -I<include_files_directories> -o<outfile.ext> infile.ext


 
palva ©   (2007-01-22 20:46) [13]

>> invert_normal := expr1 < 0;
> invert_normal - число.

Ну тогда
if expr1 < 0 then invert_normal := 1 else invert_normal := 0;



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

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

Наверх




Память: 0.49 MB
Время: 0.081 c
6-1157533660
wolchonok29
2006-09-06 13:07
2007.02.11
ПРоблема с сетью


1-1166275254
antonioxxx
2006-12-16 16:20
2007.02.11
Получение координаты в TChart


3-1163606293
AlexWlad
2006-11-15 18:58
2007.02.11
Невозврат значения из Stored Procedure


2-1169572080
Godness
2007-01-23 20:08
2007.02.11
Как создать форму в паралельном потоке?


3-1164098174
RomanH
2006-11-21 11:36
2007.02.11
Замысловатый SQL-запрос