Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 222 223 [224] 225 226 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#3346
,
|
|
|
|
А должны быть обязательны! Добавлено А кто быстро скажет чему равно значение w на x86? ![]() ![]() long i = LONG_MAX >> 8; unsigned short w = *(unsigned short*)(long(&i) + 2); |
|
Сообщ.
#3347
,
|
|
|
|
Цитата Romkin @ А кто быстро скажет чему равно значение w на x86? Зачем? |
|
Сообщ.
#3348
,
|
|
|
|
Цитата KILLER @ Зачем? ЧТобы окончательно доказать любовь к крякозябрам! |
|
Сообщ.
#3349
,
|
|
|
|
Цитата Romkin @ ЧТобы окончательно доказать любовь к крякозябрам! Дак там бред какойто написан, такое же можно написать и на делфях... Добавлено Я ведь тебе дал повод стебаца с С++, но ты видимо не понял, его... |
|
Сообщ.
#3350
,
|
|
|
|
Цитата KILLER @ такое же можно написать и на делфях... ![]() ![]() var i: LongInt; w: Word; begin i := LONG_MAX shr 8; w := PWord(LongInt(@i)+2)^; end; Тут проблема не в звездочках, а в магическом алгоритме и магических числах. И, кстати, как раз для Delphi такое похоже норма. Оно и написано, собственно, в дельфийском стиле, С-шник так писать не будет. |
|
Сообщ.
#3351
,
|
|
|
|
Цитата trainer @ Оно и написано, собственно, в дельфийском стиле, С-шник так писать не будет. Добавлено Цитата trainer @ Тут проблема не в звездочках, а в магическом алгоритме и магических числах. И, кстати, как раз для Delphi такое похоже норма. Нифига не норма, это просто вопрос на знание указателей. Ну и чуть арифметики, конечно. Скрытый текст И 90% дельфистов на этом засыпаются |
|
Сообщ.
#3352
,
|
|
|
|
Цитата Romkin @ Эмм... поторопился. Именно это я и сказал. Вернее, хотел сказать. Полная мысль: зачем что-то документировать, если для применения этого нужно знать о функции больше, чем без оного, да ещё и подсаживаться при этом на ухудшение сопровождаемости. И кстати, при fastcall-е вообще хрен предскажешь заранее, как оптимальнее вычислять, то ли слева направо в случае f(i, i++), то ли наоборот в случае f(++i, i), то ли квадратно-гнездовым способом в случае f(++i, i++, --i*i++). ДЫк я ж цитировал. cdecl и stdcall - как раз справа налево. Порядок зависит от соглашения вызова. |
|
Сообщ.
#3353
,
|
|
|
|
Цитата Qraizer @ Полная мысль: зачем что-то документировать, если для применения этого нужно знать о функции больше, чем без оного Это как? Соглашение о вызове всегда известно, это же часть объявления метода. |
|
Сообщ.
#3354
,
|
|
|
|
Цитата 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 |
|
Сообщ.
#3355
,
|
|
|
|
Romkin, видишь ли, это нужно компилятору, ну может ещё линкеру. Человеку-то оно зачем знать? Исключения слишком редки, чтобы ради них отказываться от пряников.
|
|
Сообщ.
#3356
,
|
|
|
|
Наследство. Я еще могу представить выбор вызова у С++, для контроллеров тех же. Но у Delphi четко определен порядок, что не мешает. Исключения слишком редки, чтобы отказываться от этого
![]() Применяется-то register и обертка safecall, остальное для внешних связей. Кстати, только эти два вызова и остаются в 64 архитектуре, что замечательно. Зоопарк не нужен. Кстати, а как вы invoke делаете, ну типа дается название метода, и нужно его у определенного объекта найти и вызвать? В Delphi это сравнительно легко через RTTI сделано, причем для всех моделей вызова. |
|
Сообщ.
#3357
,
|
|
|
|
Цитата Romkin @ Кстати, а как вы invoke делаете, ну типа дается название метода, и нужно его у определенного объекта найти и вызвать? В Delphi это сравнительно легко через RTTI сделано, причем для всех моделей вызова. С++, физически лишен таких костылей...Хотя их съэмулировать - возможность всетаки имеетца... Вот например, есь у тебя класс, ну там Computer... Есть у этого класса, 3 метода Reset... мол Reset с 1 параметром - просто грузит машину, Reset с двумя параметрами, перед тем как грузить машину, посылает всем уведомление что машина щас будет перезагружена, но приложения, которые не сохранили данные запрашивают дальнейшие действия от пользователя, и если пользователь не определился, то по истечении определенного срока принудительно грузит машину, ну и третий метод, пусть там принимает 3 параметра - перед тем как грузить машину - обязательно спрашивает у юзера - А можно ? Вернемся к вопросу: Цитата Romkin @ Кстати, а как вы invoke делаете, ну типа дается название метода, и нужно его у определенного объекта найти и вызвать? А как такое сделать? Какой метод из трех нужно звать, если известно только его имя? |
|
Сообщ.
#3358
,
|
|
|
|
Цитата Romkin @ типа дается название метода, и нужно его у определенного объекта найти и вызвать? А когда, например, это бывает нужно? Реализовать можно. Но руками. |
|
Сообщ.
#3359
,
|
|
|
|
Цитата D_KEY @ А когда, например, это бывает нужно? Реализовать можно. Но руками. У нас допустим, по такому хитрому принципу работают контролы, когда с клиента нужно что то выбрать, он посылает данные серверу, и затем на сервере есть текстовый файлик, который содержит имена функций и количество параметров, которые нужно вызвать, так вот с помощью этого файлика, можно изменять по сути функциональность... Достаточно например, изменить название функции, которая будет вызывается... |
|
Сообщ.
#3360
,
|
|
|
|
Цитата KILLER @ С++, физически лишен таких костылей... Каких костылей?! Об RPC слышал когда-нить? |