Есть ли будущее у DELPHI?
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.43] |
|
|
Правила раздела:
| Страницы: (245) « Первая ... 39 40 [41] 42 43 ... 244 245 ( Перейти к последнему сообщению ) |
Есть ли будущее у DELPHI?
|
Сообщ.
#601
,
|
|
|
|
[troll]Каким образом они там используются? Если функция принимает несколько нетривиальных параметров, таблица экспорта сама их генерит, забивает данными и вызывает эту функцию передавая туда данные?[/troll] Что вы понимаете под термином "использование функции" ? |
|
Сообщ.
#602
,
|
|
|
|
KILLER, не знаю как в Делфи, но в Билдере если в сигнатуре оглашения ф-ции присутствует
![]() ![]() __declspec(dllexport) (для простоты и совместимости с Делфи, видимо, это задефайнено на макрос PACKAGE) - то линкер всегда ее оставляет, даже если она внутри exe/dll ниразу не вызывается, иначе - выбрасывает. |
|
Сообщ.
#603
,
|
|
|
|
Цитата Chow @ то линкер всегда ее оставляет, даже если она внутри exe/dll ниразу не вызывается, иначе - выбрасывает. Причем тут __declspec(dllexport) ? на сколько я знаю к билдеру этот модификатор не имеет никакого отношения, и ничего он никуда не выкидыват, а просто либо помещает функцию в таблицу экспорта, либо не помещает. |
|
Сообщ.
#604
,
|
|
|
|
Цитата KILLER @ и ничего он никуда не выкидыват, а просто либо помещает функцию в таблицу экспорта, либо не помещает. ну да... но если этого спецификатора нету и эта ф-ция внутри не используется - он ее выкидывает.. Или мы не о том говорим? |
|
Сообщ.
#605
,
|
|
|
|
Цитата Chow @ ну да... но если этого спецификатора нету и эта ф-ция внутри не используется - он ее выкидывает.. Откуда выкидывает? Я не понимаю. Цитата Chow @ Или мы не о том говорим? Наверно не о том. Я спросил, если я пишу DLL, в которой описываю функции, которые я не использую, то значит делфи будет ругаца на них ворнингом - и не понял зачем такое вообще нужно. Мне ответили, что когда я пишу DLL, функции используются, в таблице экспорта. Под использованием функции я понимаю, непосредственно вызов функции, с передачей в нее параметров и получения конкретных действий, возложенных на эту функцию. Добавлено Та даже, ладно. Уйдем от DLL, если сложно выразился. Рассмотрим обычный такой себе пример. Я разрабатываю приложение, описываю функции, которые в будущем могу использовать или нет. Оно мне будет ругатся ворнингом что я не юзнул ту или иную функцию ? С чего вдруг компилятор должен мне выдавать предупреждение ? Я не хочу ее использовать, пока не хочу. ну с локальными переменными, которые не юзаюца - то понятно. Толку от них 0, если объявил, но нигде не юзнул. А вот с функциями то зачем такое делать? В чем смысл? Типа, вдруг я забуду юзнуть функцию которую сам же написал? Ну както по лоловски это все выглядит. И еще выставлять это за преимущество - выглядит в двойне по лоловски... |
|
Сообщ.
#606
,
|
|
|
|
в ответ на подобные вопросы я там привёл примеры. но, как выяснилось, они отлавливаются компилятором, если выкрутить уровень параноидальности на максимум. |
|
Сообщ.
#607
,
|
|
|
|
Цитата Chow @ __declspec(dllexport) (для простоты и совместимости с Делфи, видимо, это задефайнено на макрос PACKAGE) - то линкер всегда ее оставляет, даже если она внутри exe/dll ниразу не вызывается, иначе - выбрасывает. так экспортные функции ещё могут определяться в .DEF файле. |
|
Сообщ.
#608
,
|
|
|
|
и, да- таки я юзаю прекомпилированное вот это самое. |
|
Сообщ.
#609
,
|
|
|
|
Цитата KILLER @ Откуда выкидывает? Я не понимаю. Из результата компиляции (exe/dll/bpl). Но наверное не о том мы ![]() Цитата KILLER @ Я разрабатываю приложение, описываю функции, которые в будущем могу использовать или нет. Оно мне будет ругатся ворнингом что я не юзнул ту или иную функцию ? С чего вдруг компилятор должен мне выдавать предупреждение? Честно говоря даже не сталкивался с таким ниразу. Слабо представляю как это вообще в Делфи сделано (если сделано) ибо знаю что там однопроходный компилятор и нет линковки.. Таким ворнингом ну точно компилятор (в моем понимании) ругаться не может, это может сделать в конце линкер.. Согласен, полезность даной фичи сомнительна и по умолчанию ее не было и нет начиная от 5-го Билдера. (хотя, возможно такую опцию и можна включить какими то флажками). |
|
Сообщ.
#610
,
|
|
|
|
Цитата ya2500 @ в ответ на подобные вопросы я там привёл примеры. но, как выяснилось, они отлавливаются компилятором, если выкрутить уровень параноидальности на максимум. Какие примеры? Я их там не увидел, скажи хоть номер страницы. Я пока читаю - и вижу что ты некомпетентен в вопросе, и пытаешься чего то ляпнуть, но не совсем по делу ляпаешь. |
|
Сообщ.
#611
,
|
|
|
|
Цитата Chow @ Слабо представляю как это вообще в Делфи сделано (если сделано) ибо знаю что там однопроходный компилятор и нет линковки.. а .dcu файлы зачем тогда нужны? линковка везде есть, просто в delphi(на сколько я знаю) компилятор и линкер объединены в один исполняемый файл. |
|
Сообщ.
#612
,
|
|
|
|
Мля, что только тут не обсуждают
|
|
Сообщ.
#613
,
|
|
|
|
Цитата D_KEY @ Мля, что только тут не обсуждают эт да... ![]() ну а что делать если единственный апологет Ембаркадеро спекся? |
|
Сообщ.
#614
,
|
|
|
|
Цитата KILLER @ Та даже, ладно. Уйдем от DLL, если сложно выразился. Рассмотрим обычный такой себе пример. Я разрабатываю приложение, описываю функции, которые в будущем могу использовать или нет. Оно мне будет ругатся ворнингом что я не юзнул ту или иную функцию ? С чего вдруг компилятор должен мне выдавать предупреждение ? Я не хочу ее использовать, пока не хочу. ну с локальными переменными, которые не юзаюца - то понятно. Толку от них 0, если объявил, но нигде не юзнул. А вот с функциями то зачем такое делать? В чем смысл? Типа, вдруг я забуду юзнуть функцию которую сам же написал? Ну както по лоловски это все выглядит. И еще выставлять это за преимущество - выглядит в двойне по лоловски... 1. если функция объявлена в implementation секции unit`a и нигде не используется: в бинарнике exe/dll/bpl её не будет, warning`a тоже не будет 2. если функция объявлена в interface секции unit`a и нигде не используется: в бинарнике exe/dll её не будет(в bpl будет, bpl экспортируют все публичные функции), warning`a тоже не будет 3. если функция-метод класса, объявлена в private секции класса и нигде не используется, будет warning и в бинарнике её не будет |
|
Сообщ.
#615
,
|
|
|
|
Цитата KILLER @ От них вреда хватает. Если определил, значит была нужна, раз не заюзал... ошибся именем. Всё срослось ну с локальными переменными, которые не юзаюца - то понятно. Толку от них 0, если объявил, но нигде не юзнул , ошибочное имя случайно совпало с именем в окаймляющей области видимости ![]() Вы всё ещё игнорите такие варнинги? Особенно доставляет опен соурс. Они просто обожают забивать на них. Такие, блин, профи все, ага. Сидишь потом и рефакторишь за них, а нигде ли нет ошибок в использовании локальных имён. Повбивалбы. |