Текущий архив: 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.47 MB
Время: 0.042 c