На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 222 223 [224] 225 226 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата D_KEY @
    Ну так и я говорю, что typedef'ы тут явно желательны.

    А должны быть обязательны! :tong:

    Добавлено
    А кто быстро скажет чему равно значение w на x86?
    ExpandedWrap disabled
      long i = LONG_MAX >> 8;
        unsigned short w =  *(unsigned short*)(long(&i) + 2);
      Цитата Romkin @
      А кто быстро скажет чему равно значение w на x86?

      Зачем?
        Цитата KILLER @
        Зачем?

        ЧТобы окончательно доказать любовь к крякозябрам!
          Цитата Romkin @
          ЧТобы окончательно доказать любовь к крякозябрам!

          Дак там бред какойто написан, такое же можно написать и на делфях...

          Добавлено
          Я ведь тебе дал повод стебаца с С++, но ты видимо не понял, его... :(
            Цитата KILLER @
            такое же можно написать и на делфях...

            ExpandedWrap disabled
              var
                i: LongInt;
                w: Word;
              begin
                i := LONG_MAX shr 8;
                w := PWord(LongInt(@i)+2)^;
              end;
            Можно подумать, что это лучше... :D Тут проблема не в звездочках, а в магическом алгоритме и магических числах. И, кстати, как раз для Delphi такое похоже норма. Оно и написано, собственно, в дельфийском стиле, С-шник так писать не будет.
            Сообщение отредактировано: trainer -
              Цитата trainer @
              Оно и написано, собственно, в дельфийском стиле, С-шник так писать не будет.

              :ph34r: :blush:

              Добавлено
              Цитата trainer @
              Тут проблема не в звездочках, а в магическом алгоритме и магических числах. И, кстати, как раз для Delphi такое похоже норма.

              Нифига не норма, это просто вопрос на знание указателей. Ну и чуть арифметики, конечно.
              Скрытый текст
              И 90% дельфистов на этом засыпаются :'(
              Сообщение отредактировано: Romkin -
                Цитата Romkin @
                ДЫк я ж цитировал. cdecl и stdcall - как раз справа налево. Порядок зависит от соглашения вызова.
                Эмм... поторопился. Именно это я и сказал. Вернее, хотел сказать. Полная мысль: зачем что-то документировать, если для применения этого нужно знать о функции больше, чем без оного, да ещё и подсаживаться при этом на ухудшение сопровождаемости. И кстати, при fastcall-е вообще хрен предскажешь заранее, как оптимальнее вычислять, то ли слева направо в случае f(i, i++), то ли наоборот в случае f(++i, i), то ли квадратно-гнездовым способом в случае f(++i, i++, --i*i++).
                  Цитата Qraizer @
                  Полная мысль: зачем что-то документировать, если для применения этого нужно знать о функции больше, чем без оного

                  Это как? Соглашение о вызове всегда известно, это же часть объявления метода.
                    Цитата Romkin @
                    Соглашение о вызове всегда известно, это же часть объявления метода.
                    Это в Delphi по умолчанию всегда register(fastcall), а в C/C++ соглашение по умолчанию зависит от компилятора, его настроек и целевой архитектуры.
                    Цитата Borland C++
                    -p Use Pascal calling convention
                    -p- Use C calling convention
                    -pc Use C calling convention (Default: -pc, -p-)
                    -pm Functions without an explicit calling convention to use __msfastcall.
                    -pr Use fastcall calling convention for passing parameters in registers
                    -ps Use stdcall calling convention

                    Цитата MSVC
                    /Gd Uses the __cdecl calling convention
                    /Gr Uses the __fastcall calling convention
                    /Gz Uses the __stdcall calling convention
                    Сообщение отредактировано: trainer -
                      Romkin, видишь ли, это нужно компилятору, ну может ещё линкеру. Человеку-то оно зачем знать? Исключения слишком редки, чтобы ради них отказываться от пряников.
                        Наследство. Я еще могу представить выбор вызова у С++, для контроллеров тех же. Но у Delphi четко определен порядок, что не мешает. Исключения слишком редки, чтобы отказываться от этого :)
                        Применяется-то register и обертка safecall, остальное для внешних связей. Кстати, только эти два вызова и остаются в 64 архитектуре, что замечательно. Зоопарк не нужен.

                        Кстати, а как вы invoke делаете, ну типа дается название метода, и нужно его у определенного объекта найти и вызвать? В Delphi это сравнительно легко через RTTI сделано, причем для всех моделей вызова.
                          Цитата Romkin @
                          Кстати, а как вы invoke делаете, ну типа дается название метода, и нужно его у определенного объекта найти и вызвать? В Delphi это сравнительно легко через RTTI сделано, причем для всех моделей вызова.

                          С++, физически лишен таких костылей...Хотя их съэмулировать - возможность всетаки имеетца...
                          Вот например, есь у тебя класс, ну там Computer...
                          Есть у этого класса, 3 метода Reset... мол Reset с 1 параметром - просто грузит машину, Reset с двумя параметрами, перед тем как грузить машину, посылает всем уведомление что машина щас будет перезагружена, но приложения, которые не сохранили данные запрашивают дальнейшие действия от пользователя, и если пользователь не определился, то по истечении определенного срока принудительно грузит машину, ну и третий метод, пусть там принимает 3 параметра - перед тем как грузить машину - обязательно спрашивает у юзера - А можно ?
                          Вернемся к вопросу:
                          Цитата Romkin @
                          Кстати, а как вы invoke делаете, ну типа дается название метода, и нужно его у определенного объекта найти и вызвать?

                          А как такое сделать? Какой метод из трех нужно звать, если известно только его имя?
                            Цитата Romkin @
                            типа дается название метода, и нужно его у определенного объекта найти и вызвать?

                            А когда, например, это бывает нужно? Реализовать можно. Но руками. :'(
                            Сообщение отредактировано: D_KEY -
                              Цитата D_KEY @
                              А когда, например, это бывает нужно? Реализовать можно. Но руками.

                              У нас допустим, по такому хитрому принципу работают контролы, когда с клиента нужно что то выбрать, он посылает данные серверу, и затем на сервере есть текстовый файлик, который содержит имена функций и количество параметров, которые нужно вызвать, так вот с помощью этого файлика, можно изменять по сути функциональность... Достаточно например, изменить название функции, которая будет вызывается...
                                Цитата KILLER @
                                С++, физически лишен таких костылей...

                                Каких костылей?! Об RPC слышал когда-нить?
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 222 223 [224] 225 226 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.3468 ]   [ 14 queries used ]   [ Generated: 1.08.26, 17:32 GMT ]