Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
Одя   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.034 c
2-1169710887
Егоров А.Н.
2007-01-25 10:41
2007.02.11
Кавычки в текстовых полях SQL-запросов


15-1169035618
Dmitriy_info
2007-01-17 15:06
2007.02.11
Как выводить французские символы


1-1166456445
georgius
2006-12-18 18:40
2007.02.11
Unicode -> cp1251


6-1157783641
Ольга
2006-09-09 10:34
2007.02.11
Прибить коннекции на удаленном сервере


15-1169555154
default
2007-01-23 15:25
2007.02.11
Рамка выделения штрих-пунктиром как в графических редакторах





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский